使用休眠验证程序在错误消息中包含字段名称

我正在使用Hibernate Validator 4.2.0.Final,我正在寻找在我的错误消息中包含类字段名称的最简单方法。

我发现的是以下线程 使用带有休眠验证器的自定义资源捆绑包。根据这一点,我应该为每个约束注释创建自定义注释,为每个约束注释添加一个属性。

有没有更清洁的方法来实现这一点?

下面的代码:

@Size(max = 5)
private String myField;

产生默认错误:大小必须介于 0 和 5 之间。

我希望它是:myField 大小必须介于 0 和 5 之间。


答案 1

可以使用约束暴力中的方法获取字段的名称。getPropertyPath()

一个好的默认错误消息可以是:

violation.getPropertyPath() + " " + violation.getMessage();

在嵌套对象的情况下,这将为您提供“foo可能不是空的”,或者“foo.bar 可能不是空的”。


答案 2

如果您的消息在文件中,则没有用于访问属性名称的插值变量,但您可以实现的一种方法是.properties

//in ValidationMessages.properties
app.validation.size.msg=size must be between {min} and {max}

@Size(min=10, max=15, message = "myField {app.validation.size.msg})
private String myField;

//in ValidationMessages.properties
app.validation.size.msg=size must be between {min} and {max} but provided ${validatedValue}

@Size(min=10, max=15, message = "myField {app.validation.size.msg})
private String myField;

参考:消息插值


推荐