たとえば、トップ(ヘッダ)に共通のドロップダウンメニューを持つ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;
}
}
しかし、私はゲッター/セッターへのプット・ロジックがあることを知っています間違った方法。
だから、どんな提案ですか?
ありがとうございます。