据我所知,在
execute
f:ajax
标记应限制发布到服务器的字段。
<h:form>
<h:inputText id="one" value="#{manageSettingsBean.testOne}"/>
<h:inputText id="two" value="#{manageSettingsBean.testTwo}"/>
<h:commandButton value="Multi test" action="#{maintainEntityAction.multi(manageSettingsBean.testOne, manageSettingsBean.testTwo)}">
<f:ajax execute="@this one"/>
</h:commandButton>
</h:form>
在这种情况下,我希望只有第一个
inputText
然而,在检查Chrome的网络选项卡中的表单数据时,我看到了
j_idt13=j_idt13&j_idt13%3Aone=One&j_idt13%3Atwo=Two&javax.faces.ViewState=-8624538035389330252%3A2147742525648157763&javax.faces.source=j_idt13%3Aj_idt14&javax.faces.partial.event=click&javax.faces.partial.execute=j_idt13%3Aj_idt14%20j_idt13%3Aone&javax.faces.behavior.event=action&javax.faces.partial.ajax=true
其中包含两个组件,以及它们的默认值(共个)
"One"
和
"Two"
).
j_idt13:one=One
j_idt13:two=Two
第一个组件在
javax.faces.partial.execute
,因此它是唯一一个更新的字段,但这两个字段似乎都已提交。我将部分提交作为大型表单的一部分,以避免张贴太多数据,但如果整个表单仍在提交中,好处似乎会丢失?