我是 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 新手,我玩。浏览示例应用程序。你能帮我理解这个文件中发生了什么吗?https://github.com/playframework/Play20/blob/master/samples/java/forms/app/models/User.java
我不明白为什么我们将这个接口声明为“public interface All {}”以及如何在此验证中使用它。“@Required(groups = {All.class, Step1.class})”
@Required
是在 Play 框架中创建的自定义JSR-303注释。JSR-303 是用于验证 Javabean 的规范,它允许确保给定 Java bean 的值落在一组约束内。一些标准验证注释的示例:
每个 JSR-303 注释都允许定义组,其中每个组实际上只是一个类。这些组可用于对给定 bean 执行验证子集。在您的特定示例中,实现者定义了两个接口来表示这些组 -All
和Step1
. 然后他们将组添加到验证注释中,以指示这些验证属于该组。所以对于下面的课程:
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();
以下将对字段执行@Required
和@MinLength
验证username
:
validator.validate(bean, All.class);
而以下将仅执行@Required
验证(针对该username
字段):
validator.validate(bean, Step1.class);