2012-03-08 1 views
0

인터넷에서 보았지만 내 문제를 해결하는 JSR 303에 대한 예제를 찾을 수 없습니다.JSR 303 인스턴스 기반 객체에 대한 다른 규칙

는 다음과 같은 클래스가 있다고 가정 (이 디자인은 변경 될 수 없습니다!) :

다음과 같이 소재지 및 대응 주소가 표시됩니다이있는 사람 :

public class Person { 

    private Address domicile = null; 
    private Address correspondence = null; 


    public Address getDomicile() { 
     return domicile; 
    } 

    public void setDomicile(final Address domicile) { 
     this.domicile = domicile; 
    } 

    public Address getCorrespondence() { 
     return correspondence; 
    } 

    public void setCorrespondence(final Address correspondence) { 
     this.correspondence = correspondence; 
    } 

} 

public class Address { 

    private String streetName = null; 

    public String getStreetName() { 
    return streetName; 
    } 

public void setStreetName(final String streetName) { 
    this.streetName = streetName; 
} 

} 

내가 어떻게 구현할 수있다, JSR 303 접근 방식을 사용하여 street name이 주소지를 참조하는 경우 비워두면 안된다는 규칙이 있습니까?

이 같은 검증을 실행 나는 검증 실패를 얻어야한다 (거주지 주소 거리가 null) :

Person p = new Person(); 

Address a = new Address(); 
a.setStreetName("some street"); 
p.setCorrespondence(a); 

a = new Address(); 
p.setDomicile(a); 

validator.validate(p); 

유효성 검사기는 빈 사람에 대해 호출됩니다. 이 디자인에 따르면, 나는 (Person 클래스 내에서) 2 Addresses 인스턴스에 몇 가지 주석을 정의해야한다고 생각하며,이 정보를 streetName 필드 자체 (예 : NotBlank)에 정의 된 일부 제약 조건으로 전달하는 방법 그렇게하는 법을 모르겠습니다.

나는 JSR 303 그룹 기술의 알고 있지만, 나의 특별한 요구 사항에 적합하지 않는 것 같습니다.

답변

0

이 솔루션은 Person 클래스의 수준에서 적용됩니다 사용자 정의 유효성 검사기를 작성하는 것입니다.

@ValidateAddress 
public class Person { 

    private Address domicile = null; 
    private Address correspondence = null; 

    //.... 
} 

이러한 유효성 검사기는 두 필드 모두에 대한 액세스 권한을 가지며 null이 아닌지 확인할 수 있습니다.

+0

답변 해 주셔서 감사합니다. –

관련 문제