【问题标题】:play framework @Required播放框架@Required
【发布时间】:2013-02-20 15:26:45
【问题描述】:

我是 Java 新手,而且我玩。浏览示例应用程序。你能帮我理解这个文件中发生了什么吗? https://github.com/playframework/Play20/blob/master/samples/java/forms/app/models/User.java

我不明白为什么我们将这个接口声明为“public interface All {}”以及如何在此验证中使用它。 "@Required(groups = {All.class, Step1.class})"

【问题讨论】:

    标签: java playframework playframework-2.0


    【解决方案1】:

    @Required 是在 Play 框架中创建的自定义 JSR-303 注释。 JSR-303 是用于验证 Javabean 的规范,它允许确保给定 Java bean 的值落入一组约束。一些标准验证注解的示例:

    • @Max - 带注释的元素必须是一个数字,其值必须小于或等于指定的最大值。
    • @Min - 带注释的元素必须是一个数字,其值必须大于或等于指定的最小值。
    • @NotNull - 带注释的元素不能为空。

    每个 JSR-303 注释都可以定义 groups,其中每个组实际上只是一个类。这些组可用于对给定 bean 执行验证子集。在您的特定示例中,实现者定义了两个接口来表示这些组 - AllStep1。然后他们将组添加到验证注释中,以指示这些验证属于该组。所以对于下面的类:

    public class MyBean {
        @Required(groups = {All.class, Step1.class})
        @MinLength(value = 4, groups = {All.class})
        public String username;
    }
    
    MyBean bean = new MyBean();
    ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
    Validator validator = factory.getValidator();
    

    下面将对username字段执行@Required@MinLength验证:

    validator.validate(bean, All.class);
    

    而以下将仅执行 @Required 验证(对于 username 字段):

    validator.validate(bean, Step1.class);
    

    【讨论】:

    • 谢谢,这很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多