0

ユーザーがページ上の値(テキストボックス/ LOV)を変更し、誤ってタブ/キャンセルボタンを閉じた場合に、カスタムポップアップ警告メッセージを表示する必要があります。

私が試したオプションは次のとおりです。

a)アプリケーション内では、7つの異なるシナリオに複雑なタスクフロー/RegionModelを使用しています。また、要件はカスタムメッセージを表示することです-したがって、アプローチ「unsaveddatawarning」を使用できませんでした

http://www.oracle.com/technetwork/developer-tools/adf/unsaveddatawarning-100139.html

b)私が試した2番目のオプションは、カスタムリージョンコントローラーを使用することでした。CustomRegionControllerはRegionControllerを実装します

validateRegion(RegionContext regionContext)の内部で、ページデータがダーティかどうかを検出すると考えられています

     AdfFacesContext.getCurrentInstance().getDirtyPageHandler().isDataDirty();

また

    DCBindingContainer dcBindings = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
    DCDataControl cDataControl = dcBindings.getDataControl();
    boolean dirtyFlag = cDataControl.isTransactionModified();

どちらのシナリオでも、常にtrueになります(データがページの読み込み時にレンダリングされると、VO / View Linkアプリケーションモジュールの一般的なセットが常にダーティになるためと思われます)。

私に残された最後のオプションは、各要素(textbaox、LOV、チェックボックス)に対してvalueChangeListenerを呼び出すことです。私はこのオプションがまったく好きではありません。このシナリオを処理するためのより良い方法があるかどうかを提案してください。

4

1 に答える 1

0

値変更リスナーの使用が問題になるのはなぜですか?各入力コンポーネントに、バッキングBean内の同じVCLメソッドを呼び出させます。必要に応じて、vclイベントオブジェクトからコンポーネントIDを取得できます。

于 2012-05-16T11:45:21.487 に答える