支持的Javax验证列表为here。
支持的Hibernate Validations列表(扩展Javax)是here。
这些注释中的每一个都“延伸”或暗示@NotNull
吗?
例如,如果我注释以下实体:
public class Widget {
@Email
private String email;
@URL
private String website;
// etc...
}
@Email
和@URL
是否也强制执行@NotNull
?或者,如果为特定的Widget
实例定义了这些属性,它们是否只是应用/强制执行
哪些注释扩展/暗示@NotNull
,哪些注释不?这些注释是否还有其他隐含的关系?
答案 0 :(得分:3)
没有。例如,如果您从hibernate验证器查看source code的EmailValidator
,它会在isValid()
方法的开头包含此代码:
if ( value == null || value.length() == 0 ) {
return true;
}
URLValidator
相同,依此类推。通常,当您尝试验证null
值时,相应注释的所有验证器都会将值视为有效,因此一个好的经验法则是始终分别执行非空验证。
修改:这是JSR-303 specification与此问题相关的引用:
虽然不是强制性的,但分割它是一种很好的做法 非空约束验证的核心约束验证 (例如,@ Email约束将在null对象上返回true, 即不会处理@NotNull验证)