2012-06-22 1 views
0

Spring MVC 3.1 웹 어플리케이션을 만들고 있습니다. 대부분의 폼 제출은 jQuery ajax 호출과 폼 직렬화를 사용하여 수행됩니다. 이것은 잘 작동합니다. 서버에서 유효성 검사 오류 메시지를 다시 가져 오는 방법이 필요했기 때문에 예제를 살펴 보았습니다. 기본적으로 BindingResult 객체를 사용자 정의 JsonResponse 객체에 배치 한 후 온라인으로 찾았습니다 (@ResponseBody). 이것도 훌륭하게 작동합니다! 여기에 우리가 내 문제를 해결할 수있는 곳이 있는데, BindingResult 개체가 돌아 왔지만 Spring : form 태그를 사용하는 경우와 같이 메시지가 보간되지 않습니다. 문제를 조사한 결과 SpringMessageSourceInterpolater을 사용자 정의로 덮어 쓰려고 시도 할 수 있다는 것을 발견했습니다. 그러나 이것이 JSR-303 유효성 검사 오류 만 보완하고 실제는 TypeMismatch 오류가 아닙니다. 여기에 내가 뭐하는 거지의 예입니다Spring MVC 3.1과 ajax 호출시 에러 메시지가 발생했습니다.

 public @ResponseBody 
    JSonResponse addQuote(@ModelAttribute("quote") @Valid QuoteBean quote, BindingResult result, HttpServletRequest request, HttpServletResponse response) throws IOException 
    { 
     jsonResponse = new JsonResponse(); 

     //Some handle code 

     jsonResponse.setStatus(JsonResponse.ResponseStatus.INVALID); 
     jsonResponse.setResult(result.getAllErrors()); 

     return jsonResponse; 
    } 

나는, json으로 완벽하게 연재하고, JSR-303 오류, 오류 개체의 defaultMessage 필드가 보간 메시지입니다 말했듯이 있지만, 경우 오류는 스프링 TypeMismatch입니다 (예 : Date에 바인딩하는 필드에 1을 두는 것처럼), 대신에 긴 Spring 생성 메시지로 끝납니다. 개체에있는 모든 error.getCodes()에 해당하는 메시지 코드를 추가하려고 시도했습니다 (예 : TypeMismatch.fieldname). 분명히 누군가가 Spring과 Ajax를 사용하여이 유효성 검사를 수행했지만 대답을 찾을 수 없습니다.

답변

1

비슷한 문제, 즉 jQuery를 사용하여 양식을 게시하려고합니다. 현재 난 그냥 사용하여 컨트롤러에서 문자열로 bindingresult을 반환 해요 : 응용 프로그램을 개발하는 동안 임시 해결책으로

return bindingResult.getAllErrors() 

, 나는 반환 된 JSON 데이터를 분석하고 단순히 defaultMessage (들)을 보여주는거야 경고 팝업.

반환 된 json defaultmessage와 관련 양식 입력 요소를 어떻게 든 관리 할 수 ​​있습니까?

봄이나 다른 방법을 통해 문서에 관해서는별로 없기 때문에이 문제를 어떻게 처리했는지 정말 알고 싶습니다.

+0

필드 옆에있는 메시지를 얻기 위해 내가했던 일은 스프링'form' 태그와 비슷했고, 모든 필드 옆에 새로운'div's를 추가하고,'error'의 CSS 클래스를주었습니다. 'data-field = 'username ''과 같은 커스텀 속성을 추가했습니다. 그런 다음 Spring의 bindingResult 객체에 필드 이름이 있기 때문에 Ajax 콜백은'$ (this) .data (response.field) '로'div.error'를 찾는 폼을 스캔한다. 다시, 내 문제는 그 'defaultMessage' 필드를 더 친숙하게 만들고있다. – Mark

+0

안녕하세요 마크, 머리를 주셔서 감사합니다, 나는 마음에 뭔가가 있었지만,이 프로젝트 (봄 mvc/jquery 등)에 대한 기술을 많이 새로하고있어 정말 가파른 학습 곡선. 코드를 공유 하시겠습니까? form/divs와 ajax 콜백 함수를 사용 하시겠습니까? 이것은 정말로 도움이 될 것입니다. – Steve

+0

Mark -이 코드를 작성하려고합니다. 도움을 받으면 예제를 통해 많은 고통을 덜 수 있습니다. – Steve