The*_*Huy 5 custom-validators bean-validation
我正在为特定约束组(不是默认值)编写自定义验证器,但运行时给了我以下错误。
我只是好奇为什么他们需要默认值为空。感谢您能分享您的意见。谢谢 :)
xxx.model.validation.CustomValidation包含Constraint注解,但是groups参数默认值不是空数组。
StackTrace: org.hibernate.validator.metadata.ConstraintHelper.assertGroupsParameterExists(ConstraintHelper.java:335) org.hibernate.validator.metadata.ConstraintHelper.isConstraintAnnotation(ConstraintHelper.java:282)
我无法弄清楚在哪种情况下将约束绑定到特定组会很有用。
组用于部分验证(和序列验证)。如果类中有 10 个字段,则可以用A标记其中 8 个字段,用B标记2 个字段。然后您可以决定仅验证A组或B组中的字段。相反,您希望它属于名为C@MyConstraint的特定组。这个不成立。组或多或少是一个名称,用于将某些字段与同一类中的其他字段区分开来。它没有绝对的意义。组在验证中有用,而不是在约束定义中有用,它们与字段相关,而不与约束相关。
此外,如果您在约束定义中隐藏组名称,您可能会遇到错误,因为您可能会认为所有字段都是一起验证的。
@Email
private String mail;
@Password
private String pass;
@VAT
private String vatCode;
Run Code Online (Sandbox Code Playgroud)
您能看到是否有部分验证吗?
编辑
关于第二条评论:假设您有一个具有 5 个字段且完全没有约束的类。其中三个是整数。如果您想验证这三个字段的总和,您必须按照您的建议创建一个类级约束。通过这种方式,您的自定义注释将应用于类而不是字段,那么如何在字段上定义组呢?
相反,你可以使用这样的东西:
@Sum(min = 250, fields = {"length", "width", "height"})
public class MyClass {
private String type;
private String code;
private int length;
private int width;
private int height;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4184 次 |
| 最近记录: |