私が理解する限り、f:ajax
タグのexecute
にIDを指定すると、サーバーに送信されるフィールドが制限されます。実行中の特定のIDを持つ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のネットワークタブでフォームのデータを調べるには
は、しかし、私は("One"
と"Two"
の)そのデフォルト値と、両方のコンポーネントが含まれてい
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
を参照してください。
j_idt13:one=One
j_idt13:two=Two
第一成分はjavax.faces.partial.execute
に指定されているので、更新された唯一のものですが、両方のフィールドが提出されているように見えるん。あまりにも多くのデータをポストするのを避けるために、私は部分的な提出を大きなフォームの一部としてやっていますが、フォーム全体がまだ提出されていれば利益は失われているように見えますか?
素晴らしい、ありがとう。 OmnifacesはJBoss EAP6のモジュール構造と完全に互換性がないため、その方法はありませんが、単純なJSFを試してみましょう。 –