从ajax Spring MVC控制器方法执行普通重定向

发布于 2021-02-02 11:27:41

我有一个Spring MVC控制器方法。

我希望此方法能够:

  • 如果存在验证错误,则返回JSon @ResponseBody(在ajax中)
  • 如果没有验证错误,请执行到指定URL的普通重定向

假设我有一个名为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;
}

谁能告诉我我要实现的目标是否完全可能?

关注者
0
被浏览
75
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    您所拥有的将按照您的描述进行工作。您的方法带有注释@ResponseBody。因此,将分派特定的HandlerMethodReturnValueHandler,,RequestResponseBodyMethodProcessor处理返回的对象并将其写入响应。

    相反,如果您没有收到错误,则直接发送自己的重定向并返回null。当处理程序方法的返回值为时null,Spring会DispatcherServlet假定您自己处理生成响应。

    您唯一需要担心的是AJAX处理程序如何期望响应。在一种情况下,它将获取JSON,在另一种情况下,它将获取任何/success回报。

    注意:如果您希望重定向从AJAX请求重定向整个浏览器页面,则此操作将无效。
    您将需要在AJAX处理程序中有一个特殊情况,该特殊情况将通过设置window.location或相关内容来更改浏览器页面。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看