仅在第一个 h:messages 组件中显示全局面孔消息

Show global faces message only in first h:messages component

我在一个 JSF 页面中有两个全局消息组件:

这个

 <h:messages id="msg1" layout="table" globalOnly="true" showDetail="true" showSummary="false"/>

还有这个:

<h:messages id="msg2" layout="table" globalOnly="true" showSummary="true" showDetail="true"/>

第一个在这里开始:

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "No result"));

第二条消息在这里发起:

FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Reset problem"));

但是当 msg1 被调用时,它的消息值也会显示在 msg2 中。

如何避免这种情况发生?

前言:我假设已经考虑过用 for="someClientId"addMessage("someClientId", message) 替换 globalOnly="true" 并且由于某种原因显然不适用于您的特定情况,否则解决方案将有已经很明显了。


在最后一个消息组件上将 redisplay 属性设置为 false

<h:messages ... redisplay="false">

然后它不会重新显示之前在另一个消息组件中显示的消息。我只是想知道您是否不能更好地微调 ajax update/render 以仅引用特定的消息组件。