在 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中文网其他相关文章!