Spring MVC控制器发送回jQuery get / post调用的是什么?

时间:2012-09-26 13:00:24

标签: java javascript jquery ajax spring-mvc

当我使用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的某些部分。我想知道两件事:

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

我是一个视觉学习者,所以代码片段(客户端jQuery和服务器端控制器/视图)都非常赞赏!提前谢谢!

1 个答案:

答案 0 :(得分:3)

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

因此,如果您需要使用AJAX请求刷新页面的一部分,您将使用像您正在为“传统”页面执行的控制器,然后转发到生成部分标记的视图必须刷新的页面。因此,视图不会生成从<html></html>的完整HTML页面,而只会生成页面的一部分。

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

错误的处理方式与“传统”请求的处理方式完全相同。例如,如果出现500错误,则由处理AJAX响应的JavaScript代码来执行它认为合适的操作。例如,显示警告弹出窗口等。