问题:
我的Web应用程序是由多个片段和模板构成的。标题模板有一个“p:messages”来显示应用程序范围的错误。在Addtion中,我有一个内容模板来显示内容/正文。
现在我遇到以下问题:我想在Content-Template中的组件下显示内容条件错误(例如选择错误的日期等)。如果我发送了一个facesmessage,它不仅会显示在内容的消息部分,还会显示在标题中:
目前只有两个组件需要验证:
<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。
我不能做的事情:
答案 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"));
}