如何在 Jakarta 验证消息中默认包含字段名称?

问题描述 投票:0回答:1

我正在使用流行的 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

如何在默认情况下在错误消息中包含有关哪个字段验证失败的信息?对于这么受欢迎的库,我觉得必须有办法做到这一点,但我一直找不到解决方案。

bean-validation hibernate-validator jakarta-validation
1个回答
0
投票

如何在默认情况下在错误消息中包含有关哪个字段验证失败的信息?

调用

validator.validate(..)
返回一组
ConstraintViolation
约束违规 iterface 上的方法之一允许您获取属性路径
ConstraintViolation#getPropertyPath()
。路径告诉您哪个字段违反了约束。

© www.soinside.com 2019 - 2024. All rights reserved.