如何减少p:ajax的请求有效载荷p:dataTable分页
发布时间:2020-12-16 02:50:03 所属栏目:百科 来源:网络整理
导读:我正在使用带有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="handleRowE
我正在使用带有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”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |