当我使用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(...)
)并返回什么“视图”?换句话说,由于它是针对同一页面/视图的AJAX调用,因此没有新的“视图”。 jQuery结果只需要更新现有的页面/视图。@RequestParam
具有非法值),MVC控制器如何返回jQuery随后可以使用并显示给最终用户的错误消息?我是一个视觉学习者,所以代码片段(客户端jQuery和服务器端控制器/视图)都非常赞赏!提前谢谢!
答案 0 :(得分:3)
Spring MVC不关心请求是“传统”请求还是AJAX请求。除了一些潜在的额外标题,两种类型的请求完全相同。
因此,如果您需要使用AJAX请求刷新页面的一部分,您将使用像您正在为“传统”页面执行的控制器,然后转发到生成部分标记的视图必须刷新的页面。因此,视图不会生成从<html>
到</html>
的完整HTML页面,而只会生成页面的一部分。
您还可以发送make控制器返回HTML标记以外的内容:例如XML或JSON。在这种情况下,由JavaScript函数处理响应以使用接收的数据并更新页面DOM。
错误的处理方式与“传统”请求的处理方式完全相同。例如,如果出现500
错误,则由处理AJAX响应的JavaScript代码来执行它认为合适的操作。例如,显示警告弹出窗口等。