0

ポータル環境で JSF ページを使用しています。を使用すると、 を使用しvalueChangeListenerない限り、バッキング Bean でメソッドが呼び出されませんonclick="submit()"。これにより、不要なページが送信されます。の場合も同様actionListnerです。

また、 を使用すると、 が使用さajaxRefreshSubmitれている特定の部分を送信するのではなく、ページ全体が送信さajaxRefreshSubmitれます。

なぜこの振る舞いをするのですか?ポータル環境で使用しているためですか、それとも構成ファイルに何か抜けていたのでしょうか?

4

2 に答える 2

1

実際、フォームをサーバーに送信したvalueChangeListenerときにのみ実行されます。実際、JSF がクライアント側で実行されると考えるのは、JSF 初心者の主要な誤解の 1 つです。これは、Web ブラウザーで実行される HTML または JavaScript コードの一部ではありません。これは、Web サーバーで実行される Java/JSF コードの一部です。したがって、クライアントは何らかの方法で Web ブラウザーから Web サーバーに要求を送信する必要があります。フォームの送信は方法の 1 つです。

残りの部分については、私が使用していない IBM コンポーネント ライブラリに固有のものであるため、何も言うことajaxRefreshSubmitはありません (また、オープン ソースでも自由に利用できるものでもないため、使用できません)。ここ Stackoverflow でこれ以上回答が得られない場合は、developerworksの独自のフォーラムに質問を投稿することをお勧めします。ここほどアクティブで高品質ではありません。

于 2010-08-27T13:52:05.333 に答える
0

                        <h:form id="toilclaimform">
                        <h:panelGroup id="container">
                            <!-- Read only version -->

                        <hx:commandExButton type="button" id="testButton2" value="Submit" styleClass="hideRefreshToil" onmousedown="$.resourceManUtilities.formRefreshCookie()" >
                                    <hx:behavior event="onclick" id="behavior3" behaviorAction="get" targetAction="container" ></hx:behavior>
                        </hx:commandExButton>


                                <hx:commandExButton onmousedown="runToilVal()" onmouseup="$.resourceManUtilities.formSubmitCookie()" type="submit" id="testButton" value="Submit" styleClass="rmButtons" action="#{toilClaimBean.submit}">
                                    <hx:behavior event="onclick" id="behavior2" behaviorAction="get" targetAction="container" ></hx:behavior>
                                </hx:commandExButton>


                    </h:panelGroup>


                    </h:panelGroup>
                    <hx:ajaxRefreshSubmit id="ajaxRefreshRequest1" onstart="$.resourceManUtilities.ajaxLoadingStarting('form')" oncomplete="$.resourceManUtilities.ajaxFormSubmit('hideRefreshToilList')" target="container"></hx:ajaxRefreshSubmit>
                </h:form>


このライブラリを使用する場合は、標準のコマンドボタンを使用する必要がなくなり、代わりにhxコマンドボタンを使用します。上記のコードに例があります。このボタンを使用すると、ページが完全に更新されないようになり、目的のポートレットが更新されます。

乾杯

于 2011-04-19T14:03:13.913 に答える