Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何在不接触页面其余部分的情况下更新动态生成的数据表?_Jsf_Primefaces - Fatal编程技术网

Jsf 如何在不接触页面其余部分的情况下更新动态生成的数据表?

Jsf 如何在不接触页面其余部分的情况下更新动态生成的数据表?,jsf,primefaces,Jsf,Primefaces,我在视图中有一个设置,在其中动态显示数据表。这是在p:accordion元素中发生的,该元素动态生成选项卡(以及其中的数据表) 用户现在有可能(嗯,应该有…)向datatable添加、编辑和删除对象,从而向选项卡表示的对象添加、编辑和删除对象 添加和编辑功能通过对话框工作。成功添加或编辑后,我想更新包含数据的datatable 如果我更新整个accordion面板,我会失去对当前选项卡的关注,这对用户体验非常不利,特别是因为项目的其他子页面总是只更新datatable 在谷歌搜索之后,我发现我无

我在视图中有一个设置,在其中动态显示数据表。这是在p:accordion元素中发生的,该元素动态生成选项卡(以及其中的数据表)

用户现在有可能(嗯,应该有…)向datatable添加、编辑和删除对象,从而向选项卡表示的对象添加、编辑和删除对象

添加和编辑功能通过对话框工作。成功添加或编辑后,我想更新包含数据的datatable

如果我更新整个accordion面板,我会失去对当前选项卡的关注,这对用户体验非常不利,特别是因为项目的其他子页面总是只更新datatable

在谷歌搜索之后,我发现我无法动态生成JSF组件的ID,这将使整个过程只需几分钟

当我打开对话框时,我也没有任何索引可以用来“作弊”并保存在我的支持bean中

我还发现我可以通过使用JSTL来解决这个问题,但由于允许的语言有限,这是被禁止的

当前设置如下所示:

<p:accordionPanel id="academicYearAccordionPanel"
                  value="#{academicYearAndClassController.academicYears}"
                  var="academicYear" multiple="true" dynamic="true" activeIndex="-1"
                  style="width:100%;">

    <p:tab id="academicYear-#{academicYear.academicYear}" title="Jahrgang - #{academicYear.academicYear}">
        <p:outputPanel style="float:right">
            <p:commandButton value="Löschen" icon="ui-icon-close"
                             actionListener="#{academicYearAndClassController.setAcademicYear(academicYear)}"
                             process="@this"
                             oncomplete="PF('wConfirmAcademicYearDelete').show();">
            </p:commandButton>
        </p:outputPanel>
        <p:spacer style="height:50px;" />
        <p:separator />

        <!-- Tabcontent -->
        <p:outputPanel>
            <p:outputPanel style="float:right">
                <p:commandButton value="Hinzufügen" icon="ui-icon-plusthick"
                                 actionListener="#{academicYearAndClassController.setAcademicYear(academicYear)}"
                                 process="@this"
                                 oncomplete="PF('wAddSchoolclassDialog').show();">
                </p:commandButton>
            </p:outputPanel>
            <h:panelGrid columns="2">
                <h:outputText
                    value="Klassen des #{academicYear.academicYear}. Jahrgangs" />
                <p:spacer style="height:50px;" />
            </h:panelGrid>
            <p:dataTable emptyMessage="Keine Klassen vorhanden"
                         id="schoolclassTable"
                         var="schoolclass"
                         selection="#{academicYearAndClassController.schoolclass}"
                         value="#{academicYearAndClassController.getSchoolclasses(academicYear)}"
                         selectionMode="single" rowKey="#{schoolclass.name}"
                         scrollable="true" scrollHeight="500">
                <p:column headerText="Name">
                    <h:outputText value="#{schoolclass.identifier}" />
                </p:column>
                <p:column headerText="Klassenlehrkraft">
                    <h:outputText
                        value="#{schoolclass.teacher.name} (#{schoolclass.teacher.symbol})" />
                </p:column>
                <p:column headerText="Klassenraum">
                    <h:outputText
                        value="#{schoolclass.room.name} (#{schoolclass.room.locationName})" />
                </p:column>
            </p:dataTable>
        </p:outputPanel>
    </p:tab>
</p:accordionPanel>


我想用ID
schoolclassTable
更新元素。如何实现这一点?

您使用的Primefaces版本是什么?我使用的是Primefaces 5.0。同时,我将设置更改为学年的下拉菜单,每个学年都显示一个带有类的数据表。它起作用了,这就解决了我的问题。