我想创建一个自定义注释来验证ManagedBean中的属性
例如@StartWithUpperCase
public @interface StartWithUpperCase{
//
}
和im manegedBean类我使用我的注释,如:
public class myBean implements java.io.Serializable{
@StartWithUpperCase
@NotNull
private name;
}
我该怎么做。
答案 0 :(得分:2)
你可以使用带有jsf的自定义验证器在没有注释的情况下实现它,但是因为jsf 2.0你可以使用bean验证,你可以使用注释创建自定义约束,我找到了一个非常好的example来完成你需要的工作。
答案 1 :(得分:1)
首先将@Constraint
注释放在自定义验证注记类上。正如您在javadoc中看到的那样,@ Constraint需要一个实现ConstraintValidator
的验证实现类。
您的自定义注释类必须具有:
String message()
属性Class<?>[] groups() default {}
属性Class<? extends Payload>[] payload() default {}
属性如果您愿意,它可以具有特定于您的验证实现的其他属性。
如果您希望注释的消息可以本地化,则Bean Validation框架通过查找其完全限定名称为"ValidationMessages"
的{{3}}来支持国际化消息。约束注释的属性可以通过在大括号中包含ResourceBundle键来使用该ResourceBundle,例如String message() default "{StartWithUpperCase_message}";
。