2017-09-06 6 views
1

私はRest WSを構築しており、リクエスト要素を検証しています。私はJSR-303 BeanValidationを使用していますが、フィールド型Enumがあります。EnumのJSR-303の実装方法

EmploymentType.java

public enum EmploymentType { 
    EMPTY, FULL, PARTTIME, CONTRACT, CASUAL; 

    public static EmploymentType getDefaultEnum() { 
     return EMPTY; 
    } 
} 

と、私はこれを実装するために使用を使用していたクラス:

Employment.java

public class Employment implements Serializable{ 

    private static final long serialVersionUID = 1L; 

    @NotNull(message="employmentType does not accept null values") 
    private EmploymentType employmentType; 

    @Valid 
    @NotNull(message="orgData does not accept null values") 
    private OrgData orgData; 

    public Employment() { 
     employmentType = EmploymentType.getDefaultEnum(); 
     orgData = new OrgData(); 
    } 

    public EmploymentType getEmploymentType() { 
     return employmentType; 
    } 

    public void setEmploymentType(EmploymentType employmentType) { 
     this.employmentType = employmentType; 
    } 

    public OrgData getOrgData() { 
     return orgData; 
    } 

    public void setOrgData(OrgData orgData) { 
     this.orgData = orgData; 
    } 
} 

私が開発した実装が唯一の列挙があること防止列挙型の値が宣言された値の範囲内にあることを検証する方法はありますか? (EMPTY、FULL、非常勤、契約、CASUAL)

+3

何が起こるのでしょう何の抜粋であると考えていますそうでなければそれはできますか?何かが(nullでない 'employmentType'を持つ)クラスの_valid_インスタンスを生成することを管理している場合、それらの値の1つを持つ必要があります。それがenumの仕組みです – user2478398

答えて

0

私はあなたのvalueOfの検証を行うために持っているか、ここで列挙 の名前は検証が

public class Employment implements Serializable { 

@NotNull(message = "employmentType does not accept null values") 
@Valid 
private EmploymentType employmentType; 

public EmploymentType getEmploymentType() { 
    getEmploymentTypeOfEnum(); 
    return employmentType; 
} 

@Pattern(regexp = "EMPTY|FULL") 
private String getEmploymentTypeOfEnum(){ // you don't need it to be public 
    return employmentType.name(); 
} 
} 
関連する問題