我正在将JSF 2.2与Primefaces 5.1一起使用.有一个启用分页功能的可编辑素面数据表.
<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"
然后将发送 only的属性process
涵盖的HTML输入元素 属性,默认为<p:ajax>
到@this
和在<p:commandXxx>
到@form
因此,只需将其添加到数据表中,以优化分页性能:
并将其添加到只需要访问数据表中当前行的任何命令按钮(例如,在对话框中显示它)即可优化动作处理性能:
您也可以通过下面的上下文参数在
web.xml
中全局配置它 :然后在实际需要完整提交的情况下,显式使用
partialSubmit="false"