当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate Validator在错误消息中包含字段名称

商骞仕
2023-03-14

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

我发现以下线程使用带有Hibernate验证器的定制ResourceBundle。根据这一点,我应该为每个约束注释创建自定义注释,为每个约束注释添加一个属性。

有没有更干净的方法来实现这一点?

以下代码:

@Size(max = 5)
private String myField;

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

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

共有3个答案

秋兴思
2023-03-14

我将每个字段验证消息放入属性文件,如下所示:

field.student.name.size.message = Student name size is not valid.

在bean中,使用它如下:

@Size(max = 5, message = "${field.student.name.size.message}")  
private String myField;

我知道这不是一个完美的解决方案,但我也没有找到更好的办法。

安泰平
2023-03-14

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

//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;

参考:消息插值

韩智明
2023-03-14

您可以使用ConstraintViolation类中的getPropertyPath()方法获取字段的名称。

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

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

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

 类似资料:
  • 我想要包含请求中传递的字段值,以便包含在验证消息中。但整个字符串将按原样显示,而不替换字段值。我漏了什么吗?? 我正在使用以下版本:javax.validation-1.1.0.final hibernate-validator-5.0.1.final http://beanvalidation.org/1.1/spec/#消息-表达式

  • 问题内容: 我正在使用此答案中指定的相等性验证表单上的两个字段“ password”和“ confirmPassword” 。以下是 约束描述符(验证器接口)。 以下是 约束验证器 (实现类)。 以下是与JSP页面映射的验证器bean(由标记指定)。 更新 一切正常,并按预期进行验证。剩下的一件事就是在未显示的类上方显示指定的错误消息,即 只有一个问题: 发生验证冲突时如何在JSP页面上显示错误消

  • 问题内容: 有人可以帮我弄这个吗。 我有我的选择查询 我想要选择查询的内容,并在下载csv文件时包含标题,因此我执行了以下查询: 但这给了我这个错误 我想在我下载的csv文件中有这样的输出: 先感谢您。 问题答案: 如错误所示:来自查询的词典包含的键多于您在DictWriter构造函数中指定的字段名称。 一种解决方案是提前对其进行过滤,如下所示: 另一种解决方案是仅使用那些字段来构造查询: 但是,

  • 由于PHP非常糟糕,我决定在这里发表文章作为最后的手段。我想在通过PHP联系表单发送的电子邮件的消息正文中添加一个“who”变量。该表单适用于姓名、电子邮件和消息,但“谁”的输入我想成为电子邮件消息的一部分,作为一种方式来沟通谁被转介。 我尝试添加$who=$_request['who'];和$WHO连接到邮件线路一样,但两者都不起作用,后者甚至根本不发送电子邮件。

  • 我试图反序列化JSON的格式 类类型 因为我有一个映射类型,所以我添加了一个键反序列化器来反序列化 但是当我尝试反序列化时,我得到了一个异常 这是因为它遇到了在中,它在那里中断。如果我将整个键放在双引号中,它会将整个键传递给我的反序列化程序。 有没有一种方法,我可以迫使它转义char,而不必把整个关键与引号。

  • 问题内容: 以下段错误消息的正确解释是什么? 问题答案: 这是一个段错误,原因是跟随空指针试图查找要运行的代码(即在指令提取期间)。 如果这是一个程序,而不是共享库 运行(并重复给定的其他指令指针值)以查看错误发生的位置。更好的方法是,获得一个带有调试工具的内部版本,并在诸如gdb之类的调试器下重现该问题。 由于是共享库 不幸的是,您被水淹了。事后无法知道动态链接程序将库放置在内存中的位置。重现该