gpt4 book ai didi

ajax - 如何减少 p :ajax during e. g 的请求负载。 p:dataTable 分页

转载 作者:行者123 更新时间:2023-12-04 23:44:53 26 4
gpt4 key购买 nike

我在 Primefaces 5.1 中使用 JSF 2.2。有一个可编辑的primefaces 数据表,启用了分页。

            <p:dataTable editMode="row" 
editable="true"
value="#{usersBean.users}"
var="user" paginator="true" rows="20">

<p:ajax event="rowEditInit" onstart="handleRowEditInit(event,this);"/>

<p:column>
<p:rowEditor/>
</p:column>
<p:column headerText="Real name">
<p:cellEditor rendered="true">
<f:facet name="input">
<p:inputText value="#{user.realName}"/>
</f:facet>
<f:facet name="output">
<h:outputText value="#{user.realName}"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="User name">
<p:cellEditor>
<f:facet name="input">
<p:inputText value="#{user.userName}"/>
</f:facet>
<f:facet name="output">
<h:outputText value="#{user.userName}"/>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>

每次更改页面时,数据表都会使用当前页面的所有数据执行 AJAX POST。如下图所示。

enter image description here

对于具有大量数据的大表,这会导致大量请求。这不是必须的吧?有没有办法改变这种行为?

最佳答案

实际上,当您以 HTML 格式提交表单时,默认情况下每个 HTML 输入元素都将作为请求参数发送。因此,PrimeFaces ajax 组件提供了 partialSubmit="true"然后将发送 的属性只有 process 覆盖的 HTML 输入元素属性,默认为 <p:ajax>@this并在 <p:commandXxx>@form .
因此,只需将其添加到数据表中以优化分页性能:

<p:ajax event="page" partialSubmit="true" />
并将其添加到任何只需要访问数据表中的当前行的命令按钮(例如在对话框中显示)以优化 Action 处理性能:
<p:commandButton ... process="@this" partialSubmit="true" />
您还可以通过以下上下文参数在 web.xml 中全局配置它:
<context-param>
<param-name>primefaces.SUBMIT</param-name>
<param-value>partial</param-value>
</context-param>
然后对于您确实需要完整提交的情况,请明确使用 partialSubmit="false" .

关于ajax - 如何减少 p :ajax during e. g 的请求负载。 p:dataTable 分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30934671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com