我想显示以编程方式设置的clientIds的不同FacesMessages。我认为我曾经

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


用于调试。消息都在那里。但...

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


什么都不显示。只要

<h:messages />


作品。但我想将不同的消息框一起显示。我怎样才能做到这一点?谢谢

马塞尔

最佳答案

您似乎在滥用客户端ID,以将自定义/全局消息与常规验证消息分开。

你不应该那样做。如果要显示自定义/全局消息,只需不指定任何客户端ID。即,将其设置为null

context.addMessage(null, facesMessage);


这样,它们都将出现在

<h:messages globalOnly="true" />


并按通常方式使用消息重发。

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


要么

<h:messages globalOnly="false" />

09-16 11:50