在JSF中以编程方式发送几条消息
我有两个地方可以在我的网站上发布消息。 与旁边div相关的消息以及与主容器相关的消息。
我在同一页面内同时使用这两个h:消息(它的形式有prependId = false,没有id,所以消息id不会附加到其他消息中):
<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" />
然后在我的Java代码中,我使用它来打印一些消息:
facesContext.addMessage("container-messages", new FacesMessage(FacesMessage.SEVERITY_INFO, "one message", null));
第一个问题是这是有效的,但它在两者中打印消息,而不仅在容器消息中打印。
后来我换成了:
<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" />
并试图还:
<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" />
但在两种情况下,它都没有显示任何东西。
有任何想法吗?
h:messages
适用于与特定组件无关的所谓全局消息,因此这里不允许使用for
属性。
h:message
用于与特定组件相关的消息,因此for
属性是必需的,这意味着您需要一个组件进行绑定。
为了达到你的目标,你可以用下面的方式使用绑定到某个组件的两个h:message
元素(例如一个空h:grapicImage
):
<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" />
以您已经描述的方式添加消息:
facesContext.addMessage("container-messages", new
FacesMessage(FacesMessage.SEVERITY_INFO, "message1", null));
facesContext.addMessage("aside-messages", new
FacesMessage(FacesMessage.SEVERITY_INFO, "message2", null));
也可以看看: