在 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 属性的内容,但我猜它只能与类级约束一起使用。
是否有某种方法可以在不诉诸类级约束的情况下做到这一点?
解决方法
约束验证器无法访问字段本身之外的任何信息。因此,换句话说,没有办法访问同级字段。这与约束的范围有关。这样看:
@NotBlankpublic String name;
登录后复制
非空的 name 可以是个人字段,也可以是公司或其他类中的字段。它与 @notblank 所在位置没有区别。
因此,正如您在问题中所建议的那样,为了在插入消息时访问其他类字段,约束应该处于类级别……为了不创建大量自定义约束,您可以考虑查看 @scriptassert。
另请注意,constraintviolationexception 包含 constraintviolation 列表,从中您应该能够访问叶 bean (getleafbean()) 或根 bean (getrootbean()),并获取您的信息抛出异常后需要。
以上就是在 Hibernate Validator 中插入消息时如何访问实例变量?的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2621863.html