2017-09-24 16 views
0

たとえば、トップ(ヘッダ)に共通のドロップダウンメニューを持つJSFページと、このメニューに新しい値を追加するためのフォームがあります。フォーム内に「ajax」タグの絶対的な正しい属性「更新」があります(フォーム上にドロップダウンメニューが表示されます)。要点は、値を追加するためのドロップダウンメニューとフォームが異なるビュークラスを持つことです。リロードBeanプロパティ

第1に:

@Named 
@ViewScoped 
public class DropdownMenuView { 

    @Inject 
    private ValuesService service; 

    private List<String> values; 

    @PostConstruct 
    public void init() { 
     value = service.getValues(); 
    } 

    // Getters Setters... 
} 

第二1:

@Named 
@ViewScoped 
public class NewValuesView { 

    @Inject 
    private ValuesService service; 

    public void addValue(String newValue) { 
     service.addValue(newValue); 
    } 
} 

さて、今私は、フォーム、およびオープンドロップダウンリストを経由して、新しい値を追加します。しかし、DropdownMenuViewの 'values'リストはまだ同じなので、リストは実際には更新されません。

私の質問は、フォームを送信した後に '値'を更新する方法ですか? DropValueViewにDropdowneMenuViewを注入して手動で更新しない方法がありますか?

私が今見ている唯一の方法は、 "イベントクラス"のようなものを実装することです。値の更新後にイベントを発生させ、このクラスをゲッターでチェックしてください。

イベントholerダミー実装:

public class EventHolder { 
    private static boolean event; 

    public static void fire() { 
     event = true; 
    } 

    public static boolean poll() { 
     boolean res = event; 
     event = false; 
     return res; 
    } 
} 

とページ2:

public class NewValuesView { 

    @Inject 
    private ValuesService service; 

    public void addValue(String newValue) { 
     service.addValue(newValue); 
     EventHolder.fire(); 
    } 
} 

、ページ1:

public class DropdownListView { 

    ... 

    public List<String> getValues() { 
     if (EventHolder.poll()) { 
      values = service.getValues(); 
     } 
     return values; 
    } 
} 

しかし、私はゲッター/セッターへのプット・ロジックがあることを知っています間違った方法。
だから、どんな提案ですか?
ありがとうございます。

答えて

0

@Inject注釈のデフォルトの範囲は依存擬似スコープであるため、おそらく、それは

@DependentあるCDIは、いわゆる依存擬似スコープを備えています。スコープ型を明示的に宣言していないBeanのデフォルトスコープです。 [...]依存するBeanのインスタンスは、異なるクライアント間で共有されることはありません。それは厳密に他のオブジェクトの依存オブジェクトです。それは、それが属するオブジェクトが作成されるとインスタンス化され、それが属するオブジェクトが破棄されると破棄されます。あなたがあなたのサービスValuesServiceを宣言するときに

だから、通常のスコープを使用してみてください(http://docs.jboss.org/cdi/spec/1.0/html/contexts.html#dependentcontext

関連する問題