2011-04-29 10 views
0

우리는 웹 어플리케이션에서 Spring MVC 3.0을 사용하고 있습니다. 또한 Spring MVC의 유효성 확인 프레임 워크를 사용하고 있습니다.Spring MVC의 유효성 확인

유효성 검사를하는 동안 유효성을 검사해야하는 각 요소에 대해 유효성 검사기를 만들어야합니다. 예를 들어 Person 엔티티가 있으면 다음 PersonValidator를 사용하여 유효성을 검사합니다.

public class PersonValidator implements Validator { 
/** 
* This Validator validates just Person instances 
*/ 
public boolean supports(Class clazz) { 
    return Person.class.equals(clazz); 
} 

public void validate(Object obj, Errors e) { 
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "field.required"); 
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "surname", "field.required"); 
    ValidationUtils.rejectIfEmptyOrWhitespace(errors, "age", "field.required"); 
} 
} 

제 질문은 다른 방법으로 동일한 엔티티에 대해 다른 유효성 검사를 할 수 있습니까?

@RequestMapping(method = RequestMethod.POST) 
public String add(@Valid Person person, BindingResult result) { 
    if (result.hasErrors()) { 
     return "person/new"; 
    } 
    personService.addPerson(person); 
    return "redirect:/persons"; 
} 

@RequestMapping(method = RequestMethod.POST) 
public String update(@Valid Person person, BindingResult result) { 
    if (result.hasErrors()) { 
     return "person/edit"; 
    } 
    personService.updatePerson(person); 
    return "redirect:/persons"; 
} 

새 사람을 추가하는 동안 성을 인증하고 싶지만 업데이트하는 동안 나는 나이를 의무로하고 싶지 않습니다.

이것은 임의의 엔티티 및 속성 일 수있는 임의의 상황입니다.

어떻게 이러한 상황을 처리합니까?

감사합니다.

+0

아무도 이전에이 작업을 수행하지 않았습니다. 어떤 아이디어? – ashishjmeshram

답변

0

@Valid 주석을 삭제하고 대신 메소드에 삽입을위한 모델 객체에 플래그를 설정 한 다음 유효성 검사기를 직접 호출 할 수 있습니다 (컨트롤러에 삽입 할 수 있음).

그러면 유효성 검사기에서 현재 시나리오에 필요한 유효성 검사를 선택할 수 있습니다.