首页 > Java > 在 Hibernate Validator 中插入消息时如何访问实例变量?

在 Hibernate Validator 中插入消息时如何访问实例变量?

WBOY
发布: 2024-02-14 13:42:09
转载
747 人浏览过

在 Hibernate Validator 中,我们经常需要自定义验证消息。有时,我们需要访问实例变量来动态地生成消息。那么,在 Hibernate Validator 中,如何访问实例变量呢?首先,我们需要在验证注解中使用占位符来引用实例变量。然后,在消息资源文件中,我们可以使用"{}"来获取实例变量的值。通过这种方式,我们可以灵活地插入实例变量的值,从而生成个性化的验证消息。在本文中,php小编鱼仔将为您详细介绍在 Hibernate Validator 中插入消息时如何访问实例变量。

问题内容

当使用 crudrepository::save 将对象插入存储库时,我使用 hibernate validator 和 spring 来验证对象。假设我们有课:

public class Person {
  public int id;

  @NotBlank(message="User with id: ${id} is missing name")
  public String name;

}
登录后复制

我希望内插消息能够访问 person 实例的所有字段,例如id 字段,然后像“${id}”或“${this.id}”一样访问它们。文档提到了一些关于能够访问所有 bean 属性的内容,但我猜它只能与类级约束一起使用。

是否有某种方法可以在不诉诸类级约束的情况下做到这一点?

解决方法

约束验证器无法访问字段本身之外的任何信息。因此,换句话说,没有办法访问同级字段。这与约束的范围有关。这样看:

@NotBlank
public String name;
登录后复制

非空的 name 可以是个人字段,也可以是公司或其他类中的字段。它与 @notblank 所在位置没有区别。

因此,正如您在问题中所建议的那样,为了在插入消息时访问其他类字段,约束应该处于类级别...... 为了不创建大量自定义约束,您可以考虑查看 @scriptassert

另请注意,constraintviolationexception 包含 constraintviolation 列表,从中您应该能够访问叶 bean (getleafbean()) 或根 bean (getrootbean()),并获取您的信息抛出异常后需要。

以上是在 Hibernate Validator 中插入消息时如何访问实例变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:stackoverflow.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板