模板中的多个primefaces消息

时间:2015-06-18 08:33:28

标签: templates jsf primefaces messages

问题:

我的Web应用程序是由多个片段和模板构成的。标题模板有一个“p:messages”来显示应用程序范围的错误。在Addtion中,我有一个内容模板来显示内容/正文。

现在我遇到以下问题:我想在Content-Template中的组件下显示内容条件错误(例如选择错误的日期等)。如果我发送了一个facesmessage,它不仅会显示在内容的消息部分,还会显示在标题中:

enter image description here

目前只有两个组件需要验证:

    <p:messages id="GlobalMessages" showSummary="true" showDetail="false" closable="true" redisplay="false"/>

    <p:messages id="ContentMessages" showDetail="true" autoUpdate="true"/>

消息标签:

 FacesContext.getCurrentInstance().addMessage(componentClientId,
            new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:","Error Text"));

我如何发送FacesMessage:

{{1}}

到目前为止我尝试了什么:

  • 使用两个p:message标记,其中for =“calendar1”和for“”calendar2“。两个模板中仍有错误。

  • 将我的“ContentMessages”与for-tag一起使用:for =“calendar1 calendar2”。显示标题中的错误,而不是内容中的错误,只有当我为for-tag使用单个组件ID时,它才会再次在两个模板中显示msg。

我不能做的事情:

  • 使用globalOnly =“true”。
  • 仅为信息和错误内容设置标题的严重性。严重错误。

1 个答案:

答案 0 :(得分:4)

由于我无法看到模板的代码,我无法判断它们是否存在问题,但在primefaces中可定位的消息应该没有问题。

尝试通过删除不必要的代码来缩小问题范围。

此示例100%有效,每条消息只显示一次。

<h:form id="form">
<p:messages for="somekey" />
<p:messages for="anotherkey" />

 <p:commandButton value="Message 1" id="m1" update="form" actionListener="#{playgroundController.addMessage1()}" styleClass="ui-priority-primary" />
 <p:commandButton value="Message 2" id="m2" update="form" actionListener="#{playgroundController.addMessage2()}" styleClass="ui-priority-primary" />

</h:form>

豆:

public void addMessage1() {
    FacesContext.getCurrentInstance().addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sample info message", "Message 1"));
}


public void addMessage2() {
    FacesContext.getCurrentInstance().addMessage("anotherkey", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sample info message 2", "Message 2"));
}