如何更新手风琴标签中的数据表(primefaces)

时间:2015-03-23 17:33:44

标签: jsf jsf-2 primefaces

我有 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;。

所以我无法从对话框中更新此表。有没有人有任何想法或经验?提前致谢。

1 个答案:

答案 0 :(得分:2)

使用以下代码进行更新:

<p:ajax event="close" listener="#{aMB.selectedReset}" update="@([id$=table_a])" />