0

현재 외국 및 국내 주소가 모두 포함 된 연락처 정보를 저장하는 응용 프로그램을 구현 중이지만 주소도 사용할 수 없습니다.Bean 유효성 검사 그룹 상속이 그룹 시퀀스 공급자와 작동하지 않습니다.

나는 항상 유효성이 검사 된 정보에 대한 수퍼 그룹과 다른 주소 상태에 대한 두 개의 하위 클래스를 정의하려고 시도했습니다.

public interface ContactValidation {} 
public interface DomesticValidation extends ContactValidation {} 
public interface ForeignValidation extends ContactValidation {} 

그런 다음 연락처 클래스에 @GroupSequenceProvider를 정의했습니다. 이 주소 검증의 수퍼 클래스가 비록

public class ContactGroupSequenceProvider implements DefaultGroupSequenceProvider<Contact> { 

@Override 
public List<Class<?>> getValidationGroups(Contact contact) { 
    List<Class<?>> defaultGroupSequence = new ArrayList<Class<?>>(); 

    if(contact.getIsForeign()){ 
     defaultGroupSequence.add(Contact.ForeignValidation.class); 
    } else { 
     defaultGroupSequence.add(Contact.DomesticValidation.class); 
    } //TODO: Add Address Disabled Case 

    defaultGroupSequence.add(Contact.class); //Get a GroupDefinitionException without this line 

    return defaultGroupSequence; 
} 

내가 주소 유효성 검사 중 하나에 프로그램을 실행

이 필드는 그룹으로 표시 = Contact.ContactValidation.class은 확인되지 않습니다.

함께 사용하면 오류를 수정하고 제출하고 새로운 오류를 얻을 필요가 없도록이 애플리케이션을 함께 검증해야합니다.

또한 이와 같이 항상 유효성이 검사 된 필드가있는 솔루션을 피하기를 원합니다.

@NotBlank(groups={DomesticValidation.class,ForeignValidation.class ,ContactValidation.class}) 
private String fullContactName; 

감사합니다.

+0

내 질문은 http://stackoverflow.com/questions/21363481/groupsequenceprovider-and-group-is-a-superset 버전 4.3.1.Final는 같은 문제에게 답장을 보내 – rdm

답변

0

하위 클래스 중 하나를 반환하면 ContactValidation 태그가 지정된 제약 조건도 유효합니다. 이것은 Hibernate Validator의 버그 인 것 같습니다. 따라서 issue tracker에서 티켓을 열 수 있습니까?

반환 할 목록에 ContactValidation을 명시 적으로 추가하려고 할 수 있습니다. 그것이 있다면

+0

감사가 버그 그럼 난 그냥 지금 주위에 해결할 것입니다. 저희 회사는 현재 최대 절전 모드 4.2.0 버전을 사용하고 있습니다. 이 문제가 이후 버전에서 수정되었는지 알고 계십니까? 그렇지 않으면 나는 그것을위한 표를 열 것이다. – kfick183

+0

이 부분의 수정 사항은 기억이 나지 않지만 5.1로 테스트하고 여전히 존재하는 경우 문제가 발생하면 도움이 될 것입니다. – Gunnar

관련 문제