【发布时间】:2017-06-21 18:09:03
【问题描述】:
我正在检查javax.validation 包中的list of available constraints,我注意到有一个注释@Null 强制该字段为空。
如果我已经知道它应该为空,我不明白将它添加到我的字段有什么意义。
例如看这个类:
public class MyClass{
@NotNull
private String myString1;
@Null
private String myString2;
// getter setters...
}
@NotNull 完全有道理。我不希望 myString1 为空。但是@Null 使myString2 无用。拥有一个应该始终为空的字段有什么意义。
【问题讨论】:
-
它不应该总是为空。在验证对象时它应该为 null。想象一个属于类的字段,但不能由用户提交,因为它是稍后计算并添加到对象中的。
-
对于分组验证约束和定义方法的结果也很有用。
-
@JBNizet,我了解您的用例,但我认为该字段不应该在用户输入类中,因为用户与它无关。如果我想向其中添加额外的字段,我应该将用户输入类转换为不同的类。如果我继续使用同一个类,我将无法再验证它,这违背了这些约束验证的目的。
-
我并不是说这样做是个好主意。我只是说它发生了,并且 Null 在这种情况下很有用。
-
@JBNizet 是对的。这是针对不同情况的简单约束。例如具有
ID字段的实体在保存到数据库之前应该是null。或者您有应该保存到您的系统中的对象但某些字段,例如某些 paymentID 应该由 3rd 方服务检索和更新,在这种情况下,当您要保存此对象时,您验证此字段 @Null,然后一些其他线程(服务)将读取此对象并另外更新该字段。所以一切都取决于你的用例。
标签: jakarta-ee constraints bean-validation