0

私のjsfアプリケーションにはいくつかのフォームがあり、そのうちのいくつかからデータを送信して、データベースにデータを保持したいと考えています。

xhtmlはそのように見えます:

<h:panelGroup id="tempOptionGroup">
<h:form id="tempOptionForm" >
...
</h:form>
</h:panelGroup>

<h:form id="2Form" >
...
</h:form>


<h:panelGroup id="panel">
<h:form id="3Form">
...
</h:form>
<h:panelGroup>

<h:form id="buttonForm">
<p:commandButton value="Submit"
action="#{Bean.callPersist}" style="margin-top:5px"
id="submit" />
</h:form>

3つのフォームを1つで提出する方法p:commandButton

アップデート

のいくつかのプロパティを調べて、最初のフォームを処理するh:commandButtonことを読みましたprocess=":tempOptionGroup:tempOptionForm"が、これはいくつかのフォームでも機能しますか?

4

2 に答える 2

1

これが本当に必要な場合は、ボタンがクリックされたときに javascript を使用して他のフォームを送信するようなことを行うことができます (はい、commandButton は ajax 送信ベースであるため、これを行うことができます)。これには、commandButton から「onclick」を使用して呼び出しますフォーム オブジェクト (document.getElementById('formid').submit()) で「送信」します。それ以外には、commandButton がネイティブにできることは何もないと思います。

大まかな例:

    <script>
        function submitOthers(){
            document.getElementById('form1').submit();
            document.getElementById('form2').submit();
        }
    </script>

    <h:form id="form1">
    </h:form>
    <h:form id="form2">
    </h:form>
    <h:form id="form3">
        <p:commandButton onclick="submitOthers()" ></p:commandButton>
    </h:form>

ページを更新する場合、非表示の commandButton を他のフォームに (醜く) 追加し、同様の JavaScript を実行してボタンを取得し、それらに対して click() を呼び出すことができます。その場合、送信は ajax になります。


しかし、あなたのビューは均質に見えるので、ツリーフォームを単一のフォームに置き換えて、内部にボタンを配置することができます (3 つのフォームが必要ない場合...)。

于 2013-06-07T14:40:52.543 に答える
0

この方法で複数のフォームを送信することはできません。コレクター フォームを作成し、代わりにそれを送信する必要があります。詳しくはこちらをご覧ください。

于 2013-06-07T14:47:26.307 に答える