我有 Accordionpanel> Tab> DataTable 。如果您在数据表中单击/选择行,显示对话框。如果您关闭对话框,我会重置所选行来自managedbean(那是工作)。但我无法在 acc>标签中更新上述数据表。
代码如下所示:
<h:form id="alphabets">
<h4>XYZ</h4>
<p:accordionPanel id="acc" value="#{aMB.aList}"
var="a" multiple="false" dynamic="true">
<p:tab title="#{a.name}">
<p:dataTable id="table_a" var="b"
value="#{a.Blist}" selectionMode="single"
selection="#{aMB.selectedA}" rowKey="#{b.id}"
rowIndexVar="count">
<p:ajax event="rowSelect" update=":dialog_form:table_c"
onstart="PF('cDialog').show()" />
<p:column style="width:40px !important;" headerText="id"
sortBy="#{count}">
<h:outputText value="#{count+1}" />
</p:column>
<p:column headerText="Name:">
<h:outputText value="#{b.name}" />
</p:column>
</p:dataTable>
</p:tab>
</p:accordionPanel>
</h:form>
<h:form id="dialog_form">
<p:dialog header="xyz details" widgetVar="cDialog"
closeOnEscape="true" showEffect="fade" hideEffect="fade"
resizable="false">
<p:ajax event="close" listener="#{aMB.selectedReset}"
update=":alphabets:acc:tab#{acc.activeIndex}" />
<p:dataTable id="table_c" var="c"
value="#{aMB.selectedB.cList}" selectionMode="single"
rowKey="#{c.id}"
rowIndexVar="count">
<p:column style="width:40px !important;" headerText="id"
sortBy="#{count}">
<h:outputText value="#{count+1}" />
</p:column>
<p:column headerText="Name">
<h:outputText value="#{c.name}" />
</p:column>
</p:dataTable>
</p:dialog>
</h:form>
当我尝试打开此页面时,我收到以下错误:
javax.faces.FacesException:找不到带表达式&#34;的组件:alphabets:acc:tab&#34;引自&#34; dialog_form:j_id_b&#34;。
所以我无法从对话框中更新此表。有没有人有任何想法或经验?提前致谢。
答案 0 :(得分:2)
使用以下代码进行更新:
<p:ajax event="close" listener="#{aMB.selectedReset}" update="@([id$=table_a])" />