<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.
答案 0 :(得分:1)
在您发布的示例中确实没有任何区别。您拥有的所有输入都在您处理的面板内。如果您将其中一个输入放在面板外,您将看到未提交该输入的值。
对于小型表单没有真正的优势,但对于包含许多ajax调用的较大表单,它确实有所作为。查看PrimeFaces showcase for a 'good' example