有选择地处理组件,"process"并将部分提交设置为 true


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

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

对于小型表单没有真正的优势,但对于包含许多ajax调用的大型表单,它确实有区别。查看PrimeFaces展示中的"好"示例

最新更新