フォームの整理に問題があります。1つのフォームを作成すると、一部のボタン(またはajax呼び出しを行う他のコンポーネント)はアクションを実行しませんが、更新は実行します。フォームを2つの新しいフォームに分割すると、ボタンが機能し始めます。
この場合、ボタンとオートコンプリートは機能しません。
<h:form styleClass="question-#{cc.attrs.question.id}">
...
<p:commandButton value="add answer" update="@form" action="#{questionEditorBean.addAnswer}" />
<p:commandButton value="save" update="@(.question-#{cc.attrs.question.id})" action="#{cc.attrs.onSave}" oncomplete="#{cc.attrs.onCancel}" />
<p:commandButton value="cancel" onclick="#{cc.attrs.onCancel}" />
<p:autoComplete value="#{questionEditorBean.newTag}" id="tagSelect" completeMethod="#{tagBean.completeTag}" dropdown="true"
var="t" itemLabel="#{t.name}" itemValue="#{t}" converter="#{tagConverter}" forceSelection="true">
<p:ajax event="itemSelect" action="#{action}" update="@form"/>
</p:autoComplete>
</h:form>
フォームを分割すると、すべてが機能します。
<h:form styleClass="question-#{cc.attrs.question.id}">
...
<p:commandButton value="add answer" update="@form" action="#{questionEditorBean.addAnswer}" />
<p:commandButton value="save" update="@(.question-#{cc.attrs.question.id})" action="#{cc.attrs.onSave}" oncomplete="#{cc.attrs.onCancel}" />
<p:commandButton value="cancel" onclick="#{cc.attrs.onCancel}" />
</h:form>
<h:form>
<p:autoComplete value="#{questionEditorBean.newTag}" id="tagSelect" completeMethod="#{tagBean.completeTag}" dropdown="true"
var="t" itemLabel="#{t.name}" itemValue="#{t}" converter="#{tagConverter}" forceSelection="true">
<p:ajax event="itemSelect" action="#{action}" update="@form"/>
</p:autoComplete>
</h:form>
ネストされたフォームはありません。私はいつもこの問題に直面しています。私はこの振る舞いを理解しておらず、概念的に一緒にする必要があるときにボタンとコンポーネントをより多くのフォームに分割したくありません。解決策はありますか?