2012-02-29 47 views
0

在寫我的自定義註釋和驗證我面臨的問題:如何將附加屬性添加到jsr 303中的驗證器?

我的註釋代碼:

@Documented 
@Target(ElementType.FIELD) 
@Retention(RetentionPolicy.RUNTIME) 
@Constraint(validatedBy = NumericValidator.class) 
public @interface Numeric { 

    String message() default "{constraint.postcode}"; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 

    int digitCount(); 
} 

這樣,你可以看到我所需要的加入參數「digitCount」。但是這個參數並不是強制性的,所以我可以不使用驗證,但根據這個註解,我必須指定它。我想爲此參數提供一些默認值,實際上我不知道如何執行此操作。

回答

0

只需爲默認值提供一個幻數並忽略具有幻數的任何註釋。在此示例中,我使用-1作爲幻數:

@Documented 
@Target(ElementType.FIELD) 
@Retention(RetentionPolicy.RUNTIME) 
@Constraint(validatedBy = NumericValidator.class) 
public @interface Numeric { 

    String message() default "{constraint.postcode}"; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 

    int digitCount() default -1; 
}