【问题标题】:Java custom annotationJava 自定义注解
【发布时间】:2014-01-13 11:26:55
【问题描述】:

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

public @interface StartWithUpperCase{
    // 
}

我使用 manegedBean 类的注释,例如:

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

我该怎么做。

【问题讨论】:

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


    【解决方案1】:

    您可以使用带有 jsf 的自定义验证器在没有注释的情况下实现它,但是从 jsf 2.0 开始,您可以使用 bean 验证,并且可以使用注释创建自定义约束,我发现了一个非常好的 example 可以满足您的需求。

    【讨论】:

      【解决方案2】:

      首先将@Constraint 注释放在您的自定义验证注释类上。正如您在 javadoc 中看到的,@Constraint 需要一个实现 ConstraintValidator 的验证实现类。

      您的自定义注解类必须具备:

      • String message() 属性
      • Class<?>[] groups() default {} 属性
      • Class<? extends Payload>[] payload() default {} 属性

      如果您愿意,它可以具有特定于您的验证实现的其他属性。

      如果您希望注释的消息可本地化,Bean Validation 框架通过查找完全限定名称为"ValidationMessages"ResourceBundle 来支持国际化消息。约束注释的属性可以通过在大括号中包含 ResourceBundle 键来使用该 ResourceBundle,例如 String message() default "{StartWithUpperCase_message}";

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-12
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 2022-01-24
        • 2013-09-28
        相关资源
        最近更新 更多