1

フォームの整理に問題があります。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>

ネストされたフォームはありません。私はいつもこの問題に直面しています。私はこの振る舞いを理解しておらず、概念的に一緒にする必要があるときにボタンとコンポーネントをより多くのフォームに分割したくありません。解決策はありますか?

4

1 に答える 1

0

次の例のように、フォームにidand setを指定してみてください。prependId="false"

<h:form id="ccForm" prependId="false">

次に、フォーム ID をすべてのupdateターゲットに追加します。

<p:ajax event="itemSelect" action="#{action}" update="ccForm:tagSelect" />

このようにしてupdate、複合コンポーネント内のターゲットを明示します。

styleClassまた、フォームでとして使用しようとしていidて、それを更新しようとしていることに気付きました。私が提案したこの方法に従って、そのupdateプロパティを次のようにします。

<p:commandButton value="save" update="ccForm:question-#{cc.attrs.question.id}" action="#{cc.attrs.onSave}" oncomplete="#{cc.attrs.onCancel}" />

お役に立てば幸いです。

于 2012-10-10T10:13:45.060 に答える