10

太っている場合は申し訳ありませんが、f:ajaxタグのexecute = "@ all"は実際に何をするはずですか?ページ上のすべての要素を送信することを期待していましたが、ページ上のすべてのフォームではなく、囲んでいるフォームの値のみをPOSTしているようです。

例えば

<h:body>
    <h:form id="form1">
        Input1/Form1 <h:inputText id="testinput" value="#{testBean.input1}" />                              
    </h:form>

    <h:form id="form2">
        Input2/form2 <h:inputText id="testinput2" value="#{testBean.input2}" />                             
        <h:commandButton value="Ok" actionListener="#{testBean.al}">
        <f:ajax execute="@all" />
        </h:commandButton>
    </h:form>
</h:body>

form2のみがクリックで投稿されます。

mojarra2.0.2を使用します。

4

4 に答える 4

4

JavaServer Faces 2.0 - The complete referenceの 352 ページからの引用を次に示します。

execute および render キーワードは、次の表に示す意味を持つ一連の特別なキーワードを受け入れます。

@all ( with を使用execute): ページ上のすべてのコンポーネントが送信され処理されます。これは、ページ全体を送信する場合に便利です。

これは、すべてのフォームのフィールドを AJAX リクエストで送信する必要があることを明確に示していると思います。

ただし、Mojarra 2.0.3 でも、これは起こりません。属性の内容に関係なくexecute(フォームのリストを配置するか、フォームのリストを配置するかに@all関係なく)、囲んでいるフォームのみがそのフィールドを送信されます。これはバグのようです。意見の変更がない限り、私はこれについて問題を提起していますか?

于 2010-10-11T12:51:43.227 に答える
1

execute=":form1 form2" である必要があります (デフォルトのセパレーターがある場合) が、そうではありません。2番目のもののみを送信します。

@all を最初の形式に入れると、最初のフォームのみが送信されます。いずれにせよ、少なくとも Safari 5/Firefox 3.6.3 では。詳細については、mojarra javascript を参照する必要があると思います。

于 2010-06-10T16:27:20.800 に答える
0

これを試しましたか?

<f:ajax execute="form1 form2" />

明示的に言及した場合、両方のフォームのデータを送信しますか?

私の知る限り、あなたは正しいです: @all はページ全体を表します。

于 2010-06-10T12:46:34.247 に答える