【问题标题】:Do Javax and Hibernate Validations imply NotNull?Javax 和 Hibernate 验证是否暗示 NotNull?
【发布时间】:2014-12-02 20:00:18
【问题描述】:

支持的 Javax 验证列表为 here

支持的 Hibernate 验证(扩展 Javax)列表为 here

这些注释中的每一个是“扩展”还是暗示@NotNull

例如,如果我注释以下实体:

public class Widget {
    @Email
    private String email;

    @URL
    private String website;

    // etc...
}

@Email@URL 是否也强制执行 @NotNull?或者他们只是简单地应用/强制如果这些属性是为特定的Widget 实例定义的?

哪些注解扩展/暗示@NotNull,哪些没有?这些注释是否存在其他隐含关系?

【问题讨论】:

    标签: java annotations bean-validation hibernate-validator


    【解决方案1】:

    没有。例如,如果您从 hibernate 验证器中查看 EmailValidatorsource code,它在 isValid() 方法的开头包含此代码:

    if ( value == null || value.length() == 0 ) {
        return true;
    }
    

    URLValidator 等也是如此。通常,当您尝试验证 null 值时,相应注释的所有验证器都认为该值有效,因此一个好的经验法则是始终单独执行非空验证。

    编辑:这是来自JSR-303 specification 与此问题相关的引述:

    虽然不是强制性的,但将 来自非空约束验证的核心约束验证 (例如,@Email 约束将在 null 对象上返回 true, 即不会处理@NotNull 验证)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2017-11-06
      • 2021-01-02
      • 1970-01-01
      • 2019-01-07
      相关资源
      最近更新 更多