JSF 2.0 を使用してアプリを作成しています。私がやりたいことは、チェックボックスがユーザーによってチェックされているかどうかに応じて、Bean のスコープをリクエストからセッションに変更したい..これは可能ですか?
または、チェックボックスがオンになっているときに、デフォルトの「セッション」スコープをリクエストスコープでオーバーライドします...
いろいろ調べてみましたが、これが可能かどうかさえわかりません。
ありがとう。
JSF 2.0 を使用してアプリを作成しています。私がやりたいことは、チェックボックスがユーザーによってチェックされているかどうかに応じて、Bean のスコープをリクエストからセッションに変更したい..これは可能ですか?
または、チェックボックスがオンになっているときに、デフォルトの「セッション」スコープをリクエストスコープでオーバーライドします...
いろいろ調べてみましたが、これが可能かどうかさえわかりません。
ありがとう。
実行時にマネージド Bean のスコープを変更することはできません。ただし、実行時に Bean の動作を簡単に変更できます。
例えば
@ManagedBean
@RequestScoped
public class MultiScopedBean {
@ManagedProperty("#{requestScopedBean}")
private RequestScopedBean requestScopedBean;
@ManagedProperty("#{sessionScopedBean}")
private SessionScopedBean sessionScopedBean;
private boolean sessionScoped; // Bind this to the checkbox.
// ...
public Object getSomeProperty() {
if (sessionScoped) {
return sessionScopedBean.getSomeProperty();
} else {
return requestScopedBean.getSomeProperty();
}
}
public void setSomeProperty(Object someProperty) {
if (sessionScoped) {
sessionScopedBean.setSomeProperty(someProperty);
} else {
requestScopedBean.setSomeProperty(someProperty);
}
}
// ...
}
はい、かなりの定型文になりますが、それはそのような奇妙な要件に対して得られるものです。