У меня есть компонент, который ссылается на коллекцию других компонентов. Я использую @Valid
, чтобы включить в проверку все бины, на которые есть ссылки.
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
экземпляров. Однако сообщения об ошибках не содержат никаких указаний на то, к каким из экземпляров они относятся. В идеале пользователь должен увидеть что-то вроде «Имя что-то отсутствует», где something - это свойство (например, id
) данного экземпляра. К сожалению, стандартный MessageInterpolator позволяет использовать заполнители только для параметров статической аннотации (например, {min}
) и не поддерживает подстановку свойств компонента.
Я прочитал несколько связанных сообщений, возможно, этот самый близкий, но ни одно из предложений не представляется возможным в моем случае ( кроме собственной реализации MessageInterpolator - чего я более чем боюсь ...).
Еще немного предыстории: я работаю над проектом JSF 2 с широким использованием тегов RichFaces. Проверяемый bean-компонент является частью вспомогательного bean-компонента страницы JSF, проверка запускается тегом <rich:graphValidator>
при отправке формы. Серверная часть - это Hibernate Validator.