首页>Program>source

我正在将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.正如您可以在下面的图像中部分看到的那样.

对于具有大量数据的大型表,这将导致大量请求.这不是必需的吧?

最新回答
  • 2021-1-11
    1 #

    确实,当您使用HTML提交表单时,默认情况下,每个HTML输入元素都将作为请求参数发送. PrimeFaces Ajax组件因此提供了 partialSubmit="true" 然后将发送 only的属性 process涵盖的HTML输入元素 属性,默认为 <p:ajax>@this 和在 <p:commandXxx>@form

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

    <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"

  • google maps:Android:如何捕获GPS位置图像
  • vbscript:如何在ASP Classic中使用cURL发布数据?