2015-06-18 62 views
1

問題:多個primefaces消息模板

我WEBAPPLICATION是多個片段和模板的構建。 Header-Template有一個「p:messages」來顯示應用程序範圍的錯誤。除此之外,我有一個內容模板來顯示內容/正文。

現在我有以下問題:我想在內容模板中的組件下顯示內容閥值錯誤(例如選擇了錯誤的日期等)。如果我發送的FacesMessage這不僅會顯示在內容的消息部分,而且在頭:

enter image description here

目前只有兩個組件,這些組件將被驗證:

<p:calendar id="calendar1" value="#{doesn't matter}"> 
    <f:validateRequired></f:validateRequired> 
</p:calendar> 

<p:calendar id="calendar2" value="#{doesn't matter}"> 
    <p:ajax event="dateSelect" listener="#{onDateSelect}" 
     partialSubmit="true" update="ContentMessages"/> 
</p:calendar> 

的信息標籤:

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

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

我如何發送的FacesMessage:

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

我試過至今:

  • 用兩個P:有消息標籤= 「CALENDAR1」 和= 「CALENDAR2」。兩個模板仍然存在錯誤。

  • 使用我的「ContentMessages」和for-tag:for =「calendar1 calendar2」。在標題中顯示錯誤,而不在內容中,僅當我爲for-tag使用單個組件ID時,它會再次在兩個模板中顯示msg。

我不能做什麼:

  • 使用globalOnly = 「真」。
  • 爲報頭設置嚴重性,僅針對信息和錯誤&致命錯誤的內容。

回答

2

由於我看不到您的模板的代碼,我不能告訴他們是否有問題,但在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")); 
}