我正在使用流行的 Jakarta bean 验证 API v3.0.2 + Hibernate Validator。我在调试验证错误时遇到很多麻烦,因为我正在验证的 bean 有很多字段,并且错误消息不包含验证失败的字段的名称。
例如,如果我有一个像这样的地址字段
public record Address(
@NotNull @Size(max = 50) String address1,
...
) {}
我尝试创建一个包含超过 50 个字符的字符串,但我收到消息:
size must be between 0 and 50
我知道我可以为每个字段编写自定义消息,如下所示:
public record Address(
@NotNull @Size(max = 50, message = "address1 must be between 0 and 50") String address1,
...
) {}
但是,我有数百个经过验证的类,每个类都有许多字段。我不想为每个
message
注释(+所有其他验证注释,如 @NotNull)编写和维护数千个自定义 @Size
。
如何在默认情况下在错误消息中包含有关哪个字段验证失败的信息?对于这么受欢迎的库,我觉得必须有办法做到这一点,但我一直找不到解决方案。
如何在默认情况下在错误消息中包含有关哪个字段验证失败的信息?
调用
validator.validate(..)
返回一组 ConstraintViolation
。 约束违规 iterface 上的方法之一允许您获取属性路径 ConstraintViolation#getPropertyPath()
。路径告诉您哪个字段违反了约束。