在使用 Hibernate Validator时,我注意到@NotEmpty
和@NotNull
注释在.InvalidValue
getInvalidValues(...)
如果我指定一条类似 的消息@NotEmpty(message = "My error message.")
,那么我将得到一个“我的错误消息”的 InvalidValue。和第二个“可能不为空或为空”
如果我不包含消息(例如单独包含消息@NotEmpty
),那么我会得到两个 InvalidValue 副本,其中包含“可能不是 null 或空”的消息字段。
为什么 Hibernate Validator 会这样做?我不应该收到一条消息,要么是我使用参数覆盖的值,要么是默认消息,但不能同时收到两者?
有关更多上下文:
我正在扩展ClassValidator<T>
我自己的ClassValidator<MyClass>
实现。我这样做是为了添加一些无法通过 annotation 完成的自定义验证。我需要查看类的多个属性的运行时值以确定验证。
当我调用我覆盖的 myClassValidator.getInvalidValues() 时,我得到了验证。在我的实现中,getInvalidValues()
我调用super.getInvalidValues()
以创建初始错误列表,然后将自定义错误添加到该列表中。在任何情况下,调用都super.getInvalidValues()
包含重复的消息,一个与传递到注释的消息属性匹配,另一个与注释消息的库存值匹配。