仅在第一个 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 以仅引用特定的消息组件。
我在一个 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 以仅引用特定的消息组件。