使用“process”选择性地处理组件并将partialSubmit设置为true

时间:2015-10-24 04:15:39

标签: jsf primefaces

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

1 个答案:

答案 0 :(得分:1)

在您发布的示例中确实没有任何区别。您拥有的所有输入都在您处理的面板内。如果您将其中一个输入放在面板外,您将看到未提交该输入的值。

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