2012-04-27 2 views
1

json을 @RequestBody로 모델에 바인딩하려고합니다.봄에서 모델 바인딩 중 Json 유효성 검사 MVC 3.1

JSR303을 사용하여 모델을 검증하고 있습니다. (I이 문서에서 읽은) 여기서

은 메소드 서명

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

필요한 정보 조각이 발생하는 MethodArgumentNotValidException 누락 된 경우이다. 필자는이 정보를 다시보기에 반환하여 사용자에게 필요한 필드를 채우지 않았 음을 보여줄 수 있기를 바랍니다. 예외가 throw되면 너무 늦은 것처럼 보입니다. 분명히, 나는 조사 할 구속력이 없다.

프레임 워크를 잘못 사용하고 있습니까? 이 시나리오를 올바르게 설정하려면 어떻게합니까?

답변

0

우선 Spring 3.1에서 ModelAndView 대신 String을 반환하는 것이 좋습니다. 주석보기로 리디렉션 다음

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

       } 

과 :

1) @ExceptionHandler 주석 예외를 캐치 : 당신이 @ResponseBody 주석 방법에서 예외를 잡을하려면

, 난 당신이 다음을 사용하는 것이 좋습니다 @ResponseBody 인수

@RequestMapping(value="/errorMessage", method=RequestMethod.GET) 
    @Responsebody 
    public String handleMyExceptionOnRedirect(@RequestParamter("error") String error) { 
    return error; 
      } 
+0

감사합니다. 해결 방법을 잘 모르겠습니다. 이것으로 봄 mvc 형식 : 오류 태그가 올바르게 처리되도록 충분합니까? – jbenckert

+0

이 솔루션은 AJAX를 사용하여 클라이언트 측에 오류를 반환합니다. 이는 이미 사용자에게 오류를 표시하는 방법에 달려 있습니다. 실제로 양식 : 양식 제출 대신 AJAX 제출을 사용한다는 사실 때문에 양식 제출에 의해 트리거 된 오류 태그. 나는 당신이 그것을 올바른 방법으로 방아쇠를 당길 수 있다고 믿지 않습니다. –