0

JSF 2.0 を使用してアプリを作成しています。私がやりたいことは、チェックボックスがユーザーによってチェックされているかどうかに応じて、Bean のスコープをリクエストからセッションに変更したい..これは可能ですか?

または、チェックボックスがオンになっているときに、デフォルトの「セッション」スコープをリクエストスコープでオーバーライドします...

いろいろ調べてみましたが、これが可能かどうかさえわかりません。

ありがとう。

4

1 に答える 1

1

実行時にマネージド 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);
        }
    }

    // ...
}

はい、かなりの定型文になりますが、それはそのような奇妙な要件に対して得られるものです。

于 2013-02-04T12:57:34.110 に答える