3

私はA4J、Richfacesを使用してWebアプリケーションを開発しています。私の要件の1つは、ユーザーがページから移動しようとしているときに、ユーザーがフォームの値を変更したかどうかを確認する必要があることです。

ページに保存ボタンとキャンセルボタンがあります。a4j:commandキャンセル機能にボタンを使用しています。キャンセルボタンをクリックすると、以下のことができます。

  1. ユーザーがフォーム内の何かを変更したかどうかを確認します(これはjavascriptを使用して行っており、ユーザーが値を変更した場合はフラグがあります)
  2. ユーザーがフォームの値を変更したときに確認ボックスを表示します(javascriptは「変更を本当に破棄しますか-はいいいえ」の値で確認します)
  3. ユーザーが「はい」と答えた場合は、AJAXを使用して(A4Jを使用して)フォームを送信します

私のa4jコマンドボタンのコードはこんな感じです

<a4j:commandButton action="MyClass.cancel_action"
    onclick="checkIsPageChanged()"/>

ここでの問題は、を使用しているa4j:commandButtonときに、中間のjavascript関数(ユーザーが値を更新したかどうかをチェックして確認ボックスを表示する関数)を呼び出してから、ajaxを使用してリクエストを送信できないことです。私はJSFによって生成されたコードを見てきましたが、そのコードは次のようなものです(正確ではありませんがシンタクトです)

<input type="button"
    onclick="checkIsPageChanged();AJAX.submit('')/>

ボタンをクリックすると、呼び出しのみが行われ、呼び出しはcheckIsPageChanged()行われませんAJAX.submit()

これに対する回避策は私を助けます。

前もって感謝します。

4

2 に答える 2

3

具体的には、次のものを使用できます。

onclick="if(!isPageChanged()) {return false}" 

falseを返すと、リクエストは送信されません。

于 2009-08-25T04:05:00.830 に答える
3

がtrueを返したら、それを使用a4j:jsFunctionしてあなたから呼び出します。a4j:commandButtoncheckIsPageChanged()

例えば。

<a4j:commandButton action="MyClass.cancel_action"
    onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>
于 2009-08-24T15:54:02.253 に答える