1

我正在尝试使用@RequestBody 将json 绑定到模型。

我们正在使用 JSR303 验证我们的模型。

这是方法签名

@RequestMapping(value = "/editCampaign.do", method = { RequestMethod.POST })
    public ModelAndView editCampaign(@RequestBody @Valid Campaign campaign, 
            HttpServletRequest request)

如果缺少一条必需的信息,则会抛出 MethodArgumentNotValidException (正如我在文档中阅读的那样)。我真的希望能够将此信息返回到视图,以便向用户显示他们没有填写必填字段。一旦抛出异常,似乎为时已晚。显然,我没有要检查的绑定结果。

我是否错误地使用了框架?如何正确设置此方案?

4

1 回答 1

0

首先,我建议您返回 String 而不是 ModelAndView,尤其是在 Spring 3.1 中。

如果您想从@ResponseBody带注释的方法中捕获异常,我建议您使用以下内容:

@ExceptionHandler1)用注释捕捉异常:

  @ExceptionHandler(MethodArgumentNotValidException.class)
      public String handleMyException(MethodArgumentNotValidException  exception) {
         return "redirect:errorMessage?error="+exception.getMessage());

              } 

然后重定向以查看带有@ResponseBody参数注释的视图

  @RequestMapping(value="/errorMessage", method=RequestMethod.GET)
  @Responsebody
  public String handleMyExceptionOnRedirect(@RequestParamter("error") String error) {
     return error;
          } 
于 2012-04-27T11:35:49.353 回答