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

まず、特にSpring 3.1では、ModelAndViewの代わりにStringを返すことをお勧めします。

注釈付きメソッドから例外をキャッチしたい場合@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 に答える