当前位置: 首页 > 知识库问答 >
问题:

使用Ajax只更新ui:重复而不是全部表单

堵宏毅
2023-03-14

我在应用程序中呈现某些数据时遇到一些问题。为了简单起见,我有一个h:form,它包含一个在tbody中带有ui:repeat的表。让我们举个例子(我没有把所有的代码都放进去,因为它太长了):

<h:form id="sequence-assemblage-form">
    <ui:fragment>
        <table id="table-fils">
            <thead>
                ...
            </thead>
            <tbody>
                <ui:repeat id="fil">
                    <tr>
                        many <td> one after another
                        <ui:fragment>
                            <td>
                                <h:panelGroup id="actionsEditing" rendered="">
                                                        <h:inputHidden id="filHarnaisId" value="#{fil.id}"/>

                                                        <h:commandLink styleClass="icon-20 icon-save" id="save">
                                                            <f:ajax execute="@form" render="" listener="doesAnAction"/>
                                                            <f:ajax execute="@form" render="@form" listener="doesAnotherAction"/>
                                                            <f:ajax execute="@form" render=":integrite-form :message-integrite-panel" onevent="verifierIntegrite"/>
                                                        </h:commandLink>
                                                        <h:commandLink styleClass="icon-20 icon-rollback" id="rollback" action="">
                                                            <f:ajax execute="@this" render="@form" />
                                                        </h:commandLink>
                                                    </h:panelGroup>
                            </td>
                        </ui:fragment>
                    </tr>
                </ui:repeat>
            </tbody>
        </table>
    </ui:fragment>
</h:form>

我的问题是,每次保存时,它都会完整地呈现表单,当我的表包含许多行时(你知道,每次保存时加载一个页面需要花费大约10秒以上的时间),这会导致性能问题。有没有办法这样做?它将只渲染我当前正在编辑的行?

我不知道问题出在f: ajax执行还是f: ajax渲染上,但我需要找出问题所在,并找到性能的解决方案。

祝你今天愉快,谢谢!

编辑:在试图找到解决方案时,我注意到其中一个侦听器更改了我的bean中的一个值,并且需要该值来呈现对触发保存非常重要的脚本(请参见下文)

<h:outputScript rendered="#{fil.modifie}">
    showNoticeChangementDialog();
</h:outputScript>

这些代码行正好在我的ui:重复结束之前,这意味着通过只更新ui:重复,如果我的值被修改,它应该会触发对话框?

我试图用我的ui:repeat的id更改呈现执行,但它不起作用。


共有1个答案

查学文
2023-03-14

在一位同事和这个特殊答案的帮助下,我设法找到了一个变通方法

必须包装每个

它看起来像这样:

 类似资料:
  • 问题内容: 提交表单后,我发现了许多有关使用Ajax更新部分内容的问题和答案。但是我的问题是“更简单”,我只想每隔几秒钟重新加载一部分并加载新数据。这真的一点都不困难,我记得在Rails 2.3中做了类似的事情,但是我找不到任何答案。 基本上,我有一个show.html.erb渲染部分,像这样: 位于app / views / info / _latest的部分文件 我只希望last_post d

  • 我不懂java更新。使用Windows 10,当我进入C:\Program Files\Java时,我有3个文件夹: -jdk1.8.0_221 -jre1.8.0_251 -jre1.8.0_261 当我打开cmd并键入java-version时,我得到: 当我键入javac-version时,我得到: 我检查了环境变量,它没有与Java相关的注释。当我输入cmd时,我得到: 当我键入where

  • 问题内容: 我在一个选项卡中有一个数据表,该表是从索引方法上的控制器发送的数据中加载的。 我有加载数据表的视图 然后在加载页面时在javascript中加载数据表 我也有删除功能。如何在不重新加载页面的情况下重新加载数据(使用Ajax从控制器再次获取数据)? 问题答案:

  • 指的是邮报的标题。,我正在尝试从内部更新ArrayList的值,但这不起作用 请参阅以下模型以进一步了解: 我有一个POJO类如下: 在我的管理器中,我创建了用户POJO列表: 现在在我的Facelet中,我使用将数据加载到中的to表中,以便用户可以编辑和更改值。Facelet代码: 当我编辑时,上述方法工作正常,但它不适用于。 我可以假设它适用于,因为有setter和getter方法。 那么我如

  • 我有两个密切相关的问题: 我需要在ui中的标签中更新一个表单:从主页上的对话框中重复,但不知道如何更新(因为ui中有很多标签:重复,我只需要更新一个) 命名容器被搞砸了,当我在该表单中使用id时(在试图确定更新路径表达式的情况下...) 我需要它的原因:更新“完整列表”(当前情况)会破坏所有

  • 我的web应用程序与外部系统有几个集成,所有这些集成Rest URL都保存在web应用程序中的配置文件中。我的应用程序在启动时读取此配置文件,并在连接到外部系统时使用URL值。但经常发生的情况是,其中一个外部系统关闭,我们必须使用另一个URL。在这种情况下,我们通常必须修改配置并重新部署war文件。有没有一种方法可以在不重新部署war文件的情况下用新值修改配置文件?