2014-02-02 2 views
0

Итак, я пытаюсь отображать сообщения об ошибках проверки как заголовок изображения. Я хочу сделать это, потому что сообщения довольно длинные, и я не хочу, чтобы они проходили на моей странице.JSF <h:message /> внутри <h: graphicImage /> title

Попытался связать объект UIComponent <h:message /> с объектом контроллера, но тогда я не смог узнать, как получить значение span от UIComponent.

Что мне делать?

ответ

1

Просто контролируйте разметку внутри <ui:repeat>, итерации по сообщениям. Вы можете получать сообщения в EL на FacesContext#getMessageList().

Так вместо того,

<h:inputText id="foo" ... /> 
<h:message for="foo" /> 

сделать что-то вроде

<h:inputText binding="#{foo}" ... /> 
<ui:repeat value="#{facesContext.getMessageList(foo.clientId)}" var="message"> 
    <h:graphicImage name="#{message.severity}.png" title="#{message.summary}" /> 
</ui:repeat> 

где #{message} является экземпляр FacesMessage, предлагая обычные методы получения.

+0

Thx для ответа, не знал о 'facesContext.getMessageList' thx! –

0

Альтернативное решение состоит в том, чтобы определить и поместить все эти длинные сообщения в файл .properties, в виде сообщений связки. Посмотрите здесь: When to use message bundle and resource bundle

+0

Thx для ответа, и да, я знаю, что могу переопределить эти сообщения. Тем не менее, вы считаете, что единственное возможное решение состоит в том, чтобы сделать эти сообщения короче, и нет никакого способа разместить их как заголовок изображения? –

+0

Возможно, это возможно, но это будет сложнее (больше кода в бэкэнде). – Omar

+0

Не проблема. Единственное, что мне нужно, это выяснить, как получить сообщение « Validation message» от UIComponent. Наверное, я оставлю это сейчас, если кто-то не даст мне подсказки. –

Смежные вопросы