2

ここに座っています:

  • 基本的に「ドキュメント」のリストであるJSFコンポーネントがあります
  • 同じページに任意の数のドキュメント ビューアー コンポーネントがあります。
  • これらのコンポーネントはどれもお互いを「認識」していません。つまり、設計時に相互にリンクするように構成することはできません。

ユーザーがドキュメントのリンクをクリックすると、ドキュメント ビューアー コンポーネントのそれぞれに通知されるようにします。

基本的には、ドキュメント ビューアーに、ドキュメント リスト コンポーネントが起動する特定のタイプのイベント ("DocumentSelectedEvent" など) をリッスンするという事実を公開させるという考えです。

JSF 固有ではない方法を考えることはできますが、JSF イベント モデルがそのようなことを処理できるかどうか疑問に思っています。

誰にもアイデアはありますか?

4

3 に答える 3

1

標準の JSF イベント モデルでそれを行う方法はないと思います。

コンポーネントをバッキング Bean にバインドする方法はありますか? そうすれば、イベントが発生したときに、コンポーネントのリストを調べて、それぞれに通知することができます。

于 2008-11-03T09:15:45.717 に答える
1

コンポーネントをバッキング Bean にバインドし、ValueChangeListener を使用してバッキング Bean に通知するだけです。リスナー メソッドは、それぞれの UI コンポーネントに関連付けられている他のコンポーネントの状態を変更できます。

ページを明示的に送信せずに「Ajax」の方法でそれを実行しようとしていますか?

于 2009-06-24T14:11:24.747 に答える
0

ValueChangeEvent

ドキュメントリストをどのように実装したかはわかりませんが、ドロップダウンまたはその他の複数項目リストコンポーネントの場合は、値変更イベントを実行して、コンポーネントの変更時に送信を強制できます。次に、ページ コード バッキング Bean で、ビューアーが好きなものをロードするためのメソッドを呼び出すことができます。

jsf では、バッキング Bean に記述した値変更ハンドラーを指定するだけです。

   /**
     * Handle document click value change.
     * 
     * @param valueChangedEvent the value changed event
     */
    public void handleDocumentSelect(ValueChangeEvent valueChangedEvent) {
        String selectedDocument = valueChangedEvent.getNewValue();

        doDocViewer1DisplayMethod(selectedDocument);
                doDocViewe2DisplayMethod(selectedDocument);


    }   

jsf タグを変更して、新しい値変更イベント ハンドラーを使用し、送信を強制します。

 <f:componentTag 
   attr=xxx 
   attr=xxx 
   valueChangeListener="#{pc_BackingBean.handleDocumentSelect}"
   onChange=submit();>
于 2008-11-07T19:39:48.750 に答える