Reputation: 1081
I've got two places to put messages in my website. Messages related with an aside div and messages related with the main container.
I'm using this two h:messages simultaneusly within the same page (it's forms have prependId=false and no id so messages ids are not appended with others):
<h:messages id="container-messages" infoClass="info-message" warnClass="warn-message" errorClass="error-message" globalOnly="false" />
<h:messages id="aside-messages" infoClass="info-message" warnClass="warn-message" errorClass="error-message" globalOnly="false" />
Then inside my Java code I'm using this to print some messages:
facesContext.addMessage("container-messages", new FacesMessage(FacesMessage.SEVERITY_INFO, "one message", null));
The first problem is that this works, but it prints the message in both and not only in the container-messages.
Later I replaced with :
<h:message id="container-messages" infoClass="info-message" warnClass="warn-message" errorClass="error-message"/>
<h:message id="aside-messages" infoClass="info-message" warnClass="warn-message" errorClass="error-message" />
and tried also:
<h:message for="container-messages" infoClass="info-message" warnClass="warn-message" errorClass="error-message"/>
<h:message for="aside-messages" infoClass="info-message" warnClass="warn-message" errorClass="error-message" />
but in both cases it doesn't show anything.
Any ideas?
Upvotes: 1
Views: 2039
Reputation: 13857
The h:messages
is for so-called global messages which are unrelated to a specific component and therefore the for
attribute is not allowed here.
The h:message
is for messages related to a specific component, therefore the for
attribute is required, this means you need a component to bind to.
To reach your goal you can use two h:message
elements bound to some component (e.g. an empty h:grapicImage
) in the following way:
<h:graphicImage id="someID" />
<h:message for="someID" id="container-messages" infoClass="info-message"
warnClass="warn-message" errorClass="error-message"/>
<div>
stuff
</div>
<h:message for="someID" id="aside-messages" infoClass="info-message"
warnClass="warn-message" errorClass="error-message" />
Adding the messages in the way you already described:
facesContext.addMessage("container-messages", new
FacesMessage(FacesMessage.SEVERITY_INFO, "message1", null));
facesContext.addMessage("aside-messages", new
FacesMessage(FacesMessage.SEVERITY_INFO, "message2", null));
See also:
Upvotes: 1