2014-05-20 2 views
2

나는 TextField을 가지고 유효성 확인을 field.addValidator(validator)에 추가합니다. 필드를 사용하여 엔티티를 편집하고 새로운 엔티티를 만들 때도 사용하려고합니다.vaadin의 TextField에 대한 유효성 검증 제한 조건을 정의하는 방법은 무엇입니까?

문제점 : 새 것을 작성할 때 편집 할 때 더 많은 유효성 검사기를 적용하고 싶습니다. 예 : 계정을 만들려면 UniqueAccountValidator이 텍스트 필드에 추가되어야합니다.

하지만 (동일한 양식의) 계정을 편집 할 때 객체가 새롭지 만 병합되지 않으므로 UniqueAccountValidator 만 건너 뛰고 싶습니다.

어쨌든 BeanFieldGroup 또는 AbstractField에 특정한 경우에 특정 유효성 검사기를 건너 뛰도록 말할 수 있습니까?

+0

이 경우에 두 개의 서로 다른 명령 개체/모델을 사용할 수 없습니다와 같은 뭔가? 검사기가 필드에 있으면 사용됩니다. – cfrick

+0

물론 가능하지만 재사용하고 싶습니다. – membersound

답변

3

Validator 인터페이스를 구현하여 나만의 맞춤형 검사기를 만들 수 있습니다. 엔티티가 새로운 것인지 여부와 같이 필요한 것을 확인할 수 있습니다.

public class MyValidator implements Validator { 
    @Override 
    public boolean isValid(Object value) { 
     //check if your object is new or existent 
     if(((BeanObject)value).getID()==null)){ 
     //non-existent entity, also check the unique account constraint 
      if(accountExists()) { 
        return false; 
      } 
      else { 
        return true; 
      } 
     } 

     //common checks.... 
     {....} 

    } 
.... 
} 
+0

이것은 훌륭한 아이디어입니다. 현장에서 지속적으로 검증기를 추가/제거하는 것보다 낫습니다. – membersound