【问题标题】:Processing components selectively with "process" along with setting partialSubmit to true使用“process”选择性地处理组件,并将 partialSubmit 设置为 true
【发布时间】:2015-10-24 04:15:39
【问题描述】:
<h:form id="form">            
    <p:panel id="panel">
        <p:messages autoUpdate="true"/>

        <p:inputText value="#{bean.value1}" required="true"/><br/>
        <p:inputText value="#{bean.value2}" required="true"/><br/>

        <p:commandButton partialSubmit="true"
                         process="panel"
                         update="@none"
                         actionListener="#{bean.action}"
                         value="Submit"/>
    </p:panel>

    <p:panel id="panel1"></p:panel>
    <p:panel id="panel2"></p:panel>
    <p:panel id="panel3"></p:panel>

    <!-- Other components -->
</h:form>

在这些例子中,虽然要处理的组件用process 明确列出,但是否总是值得将partialSubmit 设置为true?它对性能的影响是小还是大?

当要处理的组件用process 明确列出时,由于视图是部分自动处理的,因此不需要这样做。

在这两种情况下,收到的日志消息将与以下内容相同。

10/24/2015, 9:38:20 AM : Initiating ajax request.
10/24/2015, 9:38:20 AM : Form to post form.
10/24/2015, 9:38:20 AM : URL to post /Project/location/Test.
10/24/2015, 9:38:20 AM : Post Data:javax.faces.partial.ajax=true&javax.faces.source=form%3Aj_idt11&javax.faces.partial.execute=form%3Apanel&javax.faces.partial.render=%40none&form%3Aj_idt11=form%3Aj_idt11&form%3Aj_idt8=qqq&form%3Aj_idt10=qqq&javax.faces.ViewState=-8717858113332784641%3A8629301927694502525
10/24/2015, 9:38:20 AM : Response received succesfully.
10/24/2015, 9:38:20 AM : DOM is updated.
10/24/2015, 9:38:20 AM : Response completed.

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    在您发布的示例中,它确实没有什么不同。您拥有的所有输入都在您“处理”的面板内。如果您将其中一个输入放在面板之外,您将看到该输入的值未提交。

    对于小型表单没有真正的优势,但对于包含许多 ajax 调用的大型表单,它确实会有所作为。检查PrimeFaces showcase for a 'good' example

    【讨论】:

    • 他们在展示示例的两种情况下都使用了process="name"。在这种情况下,partialSubmit 无论设置为true 还是false 都不应该有任何影响,即它不应该处理整个表单,因为process 仅在这两种情况下都设置为特定的一个组件。但是,当 partialSubmit 设置为 false 时,它会生成一个很长的查询字符串。
    • 我休息一下……区别在于提交,而不是处理。进程(服务器端)!= 提交(从客户端向服务器发送数据)......正如您在评论中所写的那样,您会看到这种差异。长查询字符串与短查询字符串。
    • 谢谢。我正在广泛使用partialSubmitpartialSubmitFilter。例如&lt;p:dataTable&gt; 中的事件,例如rowEditCancelpagesort - &lt;p:ajax event="page" partialSubmit="true" partialSubmitFilter=":not(:input)" process="@this" .../&gt;,这会减少网络流量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多