Java自定义注释

时间:2013-12-25 15:07:39

标签: java jpa annotations jpa-2.0 managed-bean

我想创建一个自定义注释来验证ManagedBean中的属性 例如@StartWithUpperCase

public @interface StartWithUpperCase{
    // 
}

和im manegedBean类我使用我的注释,如:

public class myBean implements java.io.Serializable{
  @StartWithUpperCase
  @NotNull
  private name;
}

我该怎么做。

2 个答案:

答案 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}";