2009-06-24 8 views
0

유효성 검사기 내부에서 다른 양식 필드에 액세스하는 적절한 방법이 있습니까?내부 유효성 검사기에서 요청 매개 변수에 액세스

context.getViewRoot().findComponent("formid:exampleField:example")?

f.e 나는 사용자 지정 유효성 검사기 내부에 도시 필드를 유효성을 검사 할 국가는 미국 검사의 경우 : 이 다른 솔루션에 비해입니다.

+0

귀하의 질문에 대한 답변을 찾았습니까? –

답변

1

질문을 다시 읽고 나는이로 해석하기 위하여려고하고있다 :

"당신은 도시의 필드가 존재하는 경우, 국가 필드가 '미국'같다는 것을 확인하는 사용자 정의 유효성 검사기를 작성하려합니다

@Documented 
@ValidatorClass(value=CountryEqualsUSValidator.class) 
@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface CountryEqualsUS { 

    String message() default "The country should be US for the city provided"; 

} 

그런 다음 AV를 만들 :

먼저 발리 인터페이스를 생성 : "

그래서, 나는 다음과 같은 방식으로 이것에 대해가는 볼 것이다 alidator 클래스 :

다음
@CountryEqualsUS 
public class YourBeanClass { 

    ... 

} 

가 마지막으로 양식이 제출 컨트롤러/액션 클래스에, 도시에 대한 값입니다 : 당신이 유효성을 검사 할 클래스에 다음

public class CountryEqualsUSValidator implements Validator<CountryEqualsUS> { 

    public void initialize(CountryEqualsUS arg0) { 
    } 

    public boolean isValid(Object value) { 

     if(value != null && value instanceof YourBeanClass) { 

      YourBeanClass yourBeanClass = (YourBeanClass) value; 

      if(/*some test logic here*/) { 
       return true; 
      else { 
       return false; 
      } 

     } 

     return false; 

    } 

} 

국가를 확인하려면이 방법을 추가하고 전화하십시오 :

public boolean doValidation(YourBeanClass yourBeanClass) { 

    ClassValidator requestValidator = new ClassValidator(yourBeanClass.getClass()); 
    InvalidValue[] validationMessages = requestValidator.getInvalidValues(yourBeanClass); 

    if (validationMessages != null && validationMessages.length > 0) { 

     for (int i = 0; i < validationMessages.length; i++) { 

      //Add a validation message to be displayed to the user 

     } 

     return false; 

    } 
     return true; 
} 
관련 문제