jsf h: messages / h: сообщение для определенного clientId - PullRequest
3 голосов
/ 28 марта 2011

Я хотел бы отобразить разные FacesMessages с программно установленными clientIds.На мой взгляд, я использовал

<h:outputText value="warnMessages #{facesContext.getMessageList('warnMessages')}" />
<h:outputText value="validationMessages #{facesContext.getMessageList('validationMessages')}" />

для отладки.Все сообщения там.Но ...

<h:messages for="warnMessages"  />
<h:message for="warnMessages"  />

ничего не отображает.Работает только

<h:messages />

.Но я хотел бы, чтобы разные окна сообщений отображались вместе.Как я могу это сделать?Спасибо

Марсель

Ответы [ 3 ]

5 голосов
/ 28 марта 2011

Похоже, вы злоупотребляете идентификаторами клиентов, чтобы отделить пользовательские / глобальные сообщения от обычных сообщений проверки.

Вы не должны этого делать.Если вы хотите отобразить пользовательское / глобальное сообщение, просто не указывайте идентификатор клиента.То есть, установите его на null.

context.addMessage(null, facesMessage);

Таким образом, они все будут появляться в

<h:messages globalOnly="true" />

и использовать переименование сообщений обычным способом.*

или

<h:messages globalOnly="false" />
2 голосов
/ 28 марта 2011

В h:messages отображаются все сообщения, в том числе с отсутствующим идентификатором клиента.Поэтому атрибут for недопустим.

Атрибут for в h:message должен соответствовать атрибуту id другого компонента: в вашем примере вы должны установить id="warnMessages" в любом h:inputText хочешь.

0 голосов
/ 25 мая 2012

Добавление пользовательских сообщений на страницы JSF не так сложно.Но вам придется приложить некоторые усилия, чтобы выполнить все необходимые действия.

например,

<h:outputText value="#{bean.warnMessages}" />
<h:outputText value="#{bean.infoMessages}" />

и в классе бобов

...
public class Bean {
...
    public String warnMessages() {
      // concatenate (and add new lines to) all the WARNING string messages, with
      // html+css formatting, together and
      return warnings;
    }
    public String infoMessages() {
      // concatenate (and add new lines to) all the INFO string messages, with
      // html+css formatting, together and
      return infos;
    }
}

Также не забудьте обновить выводтекстовые сообщения, использующие ajax для некоторого события, которое вызовет методы warnMessages() и infoMessages() компонента.

...