2012-06-06 7 views
1

웹 응용 프로그램 중 하나에서 Spring 유효성 검사 (JSR 303)를 사용하고 있습니다. 사용자가 데이터를 제출하고 스프링 유효성 검사가 매우 정교하게 작동하면 아무런 문제가 없습니다. 서비스에서 데이터를 가져 와서 유효성을 검사 한 다음 내 뷰에 바인딩해야합니다 (형식이 아닌 무언가 유효성 검사).이 경우 @Valid를 어떻게 사용할 수 있습니까? 아니면 다르게 수행해야합니까? 여기 DB의 데이터에 대한 @Valid 및 바인딩 결과

내가

시작, 샘플 코드
@RequestMapping(value = "/{id}", method = RequestMethod.GET) 
public ModelAndView getView(
     @PathVariable("id") final String id, @User user, 
     HttpSession session) { 

    User user= getUser(); 

    BindingResult result = new BeanPropertyBindingResult(user, "user"); 

    validator.validate(user, result); 

    if(result.hasErrors()){ 
     logger.log(Level.ERROR, "Errors"); 
    } 

    ModelAndView view = new ModelAndView ("home"); 
    view.addObject("user",user); 
    view.addAllObject(result.getModel()); 

    return view; 

답변

3

지금까지 내가 당신이

@Autowired 
Validator validator; 
( @Valid 작동하는지 당신이 그것을 할 수 있어야합니다) 컨트롤러에 기본 org.springframework.validation.Validator를 주입 할 필요가 이해

실행 유효성 검사는 수동으로는

User user = ...; 
BindingResult result = BeanPropertyBindingResult(user, "user"); 
validator.validate(user, result); 

을 다음과 path.I에 대한

model.addAllAttributes(result.getModel()); 
+0

덕분에 내 changes.I이 핸들러 처리에 실패 얻고 포함하는 내 게시물을 업데이트 한 다음 ModelMap에 결과를 병합 D (당신의 메소드의 인수로 선언); 중첩 예외는 java.lang.NoSuchFieldError : org/apache/log4j/Level.TRACE.I입니다. 내 maven 종속성을 확인하고 모든 Spring jars (3.1.0)에 대해 동일한 릴리스를 사용하고 있습니다.이 오류에 대해서는 알 수 없습니다. – user874722

+0

log4j가 종속 항목 중 하나입니까? v1.2.x 이상? – sdouglass

+0

죄송합니다. 여기서 진행 상황을 업데이트 했어야합니다. 그래, 내 maven에서 slf4j 및 log4j를 사용하고있었습니다. 나중에 제거해야합니다. 이제 유효성 검사기에서 오류를 볼 수 있으며 바인딩 결과를 내 모델에 설정했습니다. 그리고 View 하지만 오류 JSP로 반영되지 않습니다, 나는 코드로 initail 게시물을 업데이 트했습니다. – user874722

관련 문제