【问题标题】:@NotNull and @NotEmpty for same property@NotNull 和 @NotEmpty 用于相同的属性
【发布时间】:2021-03-18 06:01:28
【问题描述】:

我正在使用弹簧靴。

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

对于同一个属性,我给出了两个注释,一个用于空检查,另一个用于空检查。

@NotNull(message = "{email.notnull}")
@NotEmpty(message = "{email.notempty}")
private String email;

我正在从属性文件加载错误消息。

当我将电子邮件设为 empty 时,我只收到来自 email.notempty 的错误消息,但是当我将电子邮件设为 null 时,email.notnullemail.notempty 将显示这两条错误消息, 请问我犯了什么错误。

当我给出 null 时,我应该只能看到 null 错误。

【问题讨论】:

  • 因为 javax.validation 将为给定字段执行所有验证器。所以两个验证器都会被执行。放弃@NotNull,离开@NotEmpty
  • 受@NotEmpty 约束的字段(例如,CharSequence、Collection、Map 或 Array)不得为 null,并且其大小/长度必须大于零。

标签: java spring spring-boot validation


【解决方案1】:

正如@NotEmpty documentation 所述

注解的元素不能为空,也不能为空。

它有一个隐含的非空要求,因此您可以删除@NotNull

另见Difference Between @NotNull, @NotEmpty, and @NotBlank Constraints in Bean Validation

【讨论】:

    猜你喜欢
    • 2014-02-21
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2013-06-12
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多