我有一个 Spring MVC Controller 方法。
我希望这个方法能够:
- 如果存在验证错误,则返回 JSon @ResponseBody(在 ajax 中)
- 如果没有验证错误,则执行到给定网址的正常重定向
假设我有一个名为 myObject 的 javabean 对象,我尝试了以下操作:
@RequestMapping(value = "/new", method = RequestMethod.POST)
@ResponseBody
public MyJavabeanObject myMethod(@RequestBody MyJavabeanObject myObject, BindingResult bindingResult, Model model,
RedirectAttributes redirectAttributes, HttpServletResponse response) throws IOException {
if (bindingResult.hasErrors()) {
//adding error message to javabean
return myObject;
}
response.sendRedirect("/success");
return null;
}
谁能告诉我我想要实现的目标是否可能实现?
最佳答案
您所拥有的将按照您所描述的那样工作。您的方法用 @ResponseBody
进行注释。因此,将分派(dispatch)特定的 HandlerMethodReturnValueHandler
、RequestResponseBodyMethodProcessor
来处理返回的对象并将其写入响应。
如果您没有收到错误,则可以直接自行发送重定向并返回 null
。当处理程序方法的返回值为 null
时,Spring 的 DispatcherServlet
假定您自己处理生成响应。
这里您唯一需要担心的是 AJAX 处理程序如何期望响应。在一种情况下,它将获得 JSON,在另一种情况下,它将获得 /success
返回的任何内容。
注意:如果您希望重定向从 AJAX 请求重定向整个浏览器页面,那么这将不起作用。您需要在 AJAX 处理程序中设置一个特殊情况,该情况将通过设置 window.location
或相关内容来执行浏览器页面更改本身。
关于jquery - 从 ajax Spring MVC Controller 方法执行正常重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346430/