我有一个引用其他 bean 集合的 bean。我使用@Valid
在验证中包含所有引用的 bean。
public class MasterBean {
@Valid
private Collection<DetailBean> details;
...
}
public class DetailBean {
private String id;
@NotBlank(message = "{name_not_blank_message_key}")
private String name;
...
}
到目前为止,这工作正常,用户从所有DetailBean
实例中获取所有验证错误消息。但是,错误消息不包含有关它们与哪些实例相关的任何指示。理想情况下,用户应该看到类似“缺少某事物的名称”的内容,其中某事物是给定实例的属性(例如id
)。不幸的是,普通的 MessageInterpolator 只允许静态注释参数的占位符(如{min}
)并且不支持替换 bean 属性。
我已经阅读了几篇相关的帖子,也许这一篇是最接近的,但在我的情况下似乎没有一个建议是可行的(除了自己的 MessageInterpolator 实现 - 我更害怕......)。
更多背景知识:我正在开发一个广泛使用 RichFaces 标记的 JSF 2 项目。要验证的 bean 是 JSF 页面的支持 bean 的一部分,验证由<rich:graphValidator>
表单提交时的标记触发。后端是 Hibernate Validator。