1

当我将 Spring MVC 与“传统”(非 AJAX,每次单击按钮后页面重新加载)网站/应用程序一起使用时,我通常定义一个控制器:

@RequestMapping(value = "/someURL", method = RequestMethod.POST)
public ModelAndView updateThreshold(@RequestParam("x") String whatever) {

    ModelAndView mav = new ModelAndView();
    max.setView("someView");

    // Inject some models into the view.

    return mav;
}

然后我编写一个 JSP 视图 ( someView.jsp) 并让它使用控制器“注入”的 Spring 标签/模型。

但是使用 jQuery,您会触发 GET/POST 请求,并期望简单地更新 DOM 的某些部分。我想知道两件事:

  • mav.setName(...)使用 jQuery,Spring MVC 控制器设置( )并返回什么“视图” ?换句话说,没有新的“视图”,因为它是对同一页面/视图的 AJAX 调用。jQuery 结果只需要更新现有的页面/视图。
  • 如果存在服务器端错误(即,有些错误@RequestParam具有非法值),MVC 控制器如何返回 jQuery 可以使用并显示给最终用户的错误消息?

我是一个视觉学习者,因此非常感谢代码片段(客户端 jQuery 和服务器端控制器/视图)!提前致谢!

4

1 回答 1

3

Spring MVC 不关心请求是“传统”请求还是 AJAX 请求。除了一些潜在的附加标头外,两种类型的请求完全相同。

因此,如果您需要使用 AJAX 请求刷新页面的一部分,您将使用控制器,就像您对“传统”页面所做的那样,然后转发到一个视图,该视图为页面的一部分生成标记必须刷新。<html>因此,视图不会生成完整的 HTML 页面 from to ,而是</html>只会生成页面的一部分。

您还可以发送使控制器返回 HTML 标记以外的内容:例如 XML 或 JSON。在这种情况下,将由处理响应的 JavaScript 函数使用接收到的数据并更新页面 DOM。

错误的处理方式与“传统”请求的处理方式完全相同。例如,如果出现500错误,则由处理 AJAX 响应的 JavaScript 代码来做它认为合适的事情。例如,显示警报弹出窗口或类似的东西。

于 2012-09-26T13:09:25.380 回答