微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何减少p:ajax的请求有效载荷p:dataTable分页

我正在使用带有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.正如您可以在下面的图像中看到的那样.

对于包含大量数据的大表,这会产生巨大的请求.这不是必要的吗?有没有办法改变这种行为?

解决方法

实际上,当您以HTML格式提交表单时,认情况下,每个HTML输入元素都将作为请求参数发送.因此,PrimeFaces ajax组件提供partialSubmit =“true”属性,该属性将仅发送process属性所涵盖的HTML输入元素,认为< p:ajax>到@this和< p:commandXxx>来形成.

因此,只需将其添加到数据表中,以便优化分页性能

<p:ajax event="page" partialSubmit="true" />

并将其添加到任何命令按钮,该按钮只需要访问数据表中的当前行(例如,在对话框中显示它)以优化操作处理性能

<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”.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐