玩框架@Required

vin*_*nos 5 java playframework playframework-2.0

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

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

Per*_*ion 11

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

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

允许每个JSR-303注释定义,其中每个组实际上只是一个类.这些组可用于执行给定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();
Run Code Online (Sandbox Code Playgroud)

下面将执行@Required@MinLength验证的username领域:

validator.validate(bean, All.class);
Run Code Online (Sandbox Code Playgroud)

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

validator.validate(bean, Step1.class);
Run Code Online (Sandbox Code Playgroud)