【发布时间】:2014-08-07 13:52:39
【问题描述】:
我有几个 <p:messages> 元素应该处理由单个 bean 产生的不同类型的错误。现在,我从浏览器获取的一个元素的 clientID 始终相同,因为内部没有生成的 id(总共 3 个 ID)。
无论我将哪个 clientID 传递给 FacesContext.addMessage(),我最终都会在 每个 <p:messages> 元素上显示所有错误消息。
浏览器中的一个客户端ID:regelDetailAccordion:duoDlgForm2:regelDetail
浏览器中的另一个客户端 ID:regelDetailAccordion:duoDlgForm1:messagesNeuerFehler
豆码:FacesContext.getCurrentInstance().addMessage(X, new FacesMessage(...));
其中X 是clientID(不是)前面有: 和/或只有regelDetail,前面有和没有:。都试过了:(
对话框-包含:
<ui:insert name="insertDuo"><ui:include src="/includes/duoRegelStmt.xhtml" />
</ui:insert>
显示我所有messages的对话框:
<p:dialog widgetVar="newDuoDialog" id="newDuoDlg" modal="true">
<p:layout id="layout">
<p:layoutUnit position="west">
<ui:insert name="insertDetailStmt">
<h:form id="stmtDetailForm">
<ui:include src="/includes/stmtDetail.xhtml" /> <!-- left side -->
</h:form>
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center">
<ui:insert name="insertDetailRegel">
<ui:include src="/includes/regelDetail.xhtml"/> <!-- right side -->
</ui:insert>
</p:layoutUnit>
</p:layout>
</p:dialog>
显示我的 3 个中的 2 个的对话框的右侧 messages:
<ui:composition>
<h:panelGrid id="unterheaderUndAccordion">
<h:panelGrid rendered="#{...}" id="regelUnterheader"/>
<p:accordionPanel multiple="true" activeIndex="0,1" id="regelDetailAccordion" rendered="#{...}">
<p:tab>
<h:form id="duoDlgForm1">
<ui:insert name="neuerFehler">
<ui:include src="/includes/neuerFehler.xhtml" />
</ui:insert>
<h:selectOneMenu value="#{regelBean.selectedFehlerCode}" id="selFCode"
onChange="submit()" process="@this" valueChangeListener="#{regelBean.changeFehlerCode}">
<p:ajax event="change" update="duoDlgForm1" />
<f:selectItems ... />
</h:selectOneMenu>
</h:form>
</p:tab>
<p:tab>
<h:form id="duoDlgForm2">
<h:panelGrid>
<p:messages id="regelDetail" showDetail="true" closable="true"/>
</h:panelGrid>
</h:form>
</p:tab>
</p:accordionPanel>
</h:panelGrid>
</ui:composition>
neuerFehler 包含一个定义如下的messages
<p:messages id="messagesNeuerFehler" showDetail="true" closable="true"/>
在我看来,当我为X 输入正确的值时,即使更新了其他messages,也只有正确的消息字段才会显示消息。如果这是真的,我必须输入的正确客户端 ID 是什么?提前非常感谢,我无能为力:(
【问题讨论】:
标签: java jsf primefaces