1

私はjsf 2.0.2 + richfaces 3.3.3を使用しています。ゲッターが複数回呼び出されないようにするにはどうすればよいですか??

私はこれを持っています:

@ManagedBean(name = "mybean")
@SessionScoped
public class mybean implements Serializable {        
public MyClass getMyClass() {
        if (FacesContext.getCurrentInstance().getRenderResponse()) {
            myClass = get_it_from_database();
        }
        return myClass;
    }

私もこれを使用しました:

@ManagedBean(name = "mybean")
@SessionScoped
public class mybean implements Serializable {        
public MyClass getMyClass() {
        if (myClass = null) {
            myClass = get_it_from_database();
        }
        return myClass;
    }

しかし、私が望んでいたのは、ページを更新するたびにデータを一度「更新」することです...

4

2 に答える 2

3

それを防ぐことはできません。それがゲッターの性質です。getter メソッドは、データをロードするためではなく、データを返すこと (つまり、外部へのアクセス ポイントを提供すること) を目的としています。そこでは、通常、Bean コンストラクターまたはアクション メソッドを使用します。@PostConstruct

特定の問題を解決するには、Bean をリクエストスコープに再宣言し、myClass = get_it_from_database();Bean のコンストラクターまたは@PostConstruct依存関係が注入されている場合はメソッドに行を移動します。または、セッション スコープを保持することを本当に主張する場合 (2 つの Bean を使用することをお勧めします。1 つのセッションはセッション スコープ データにスコープされ、もう 1 つのリクエストはリクエスト スコープ データにスコープされます)、最初のアプローチが最も合理的です。

以下も参照してください。

于 2010-08-06T13:55:48.523 に答える
0

ゲッターセッターでmyclassプロパティを作成し、それを参照するとそれが維持され、問題で述べたようにnullチェックも使用されます。良い1日を

于 2010-08-02T11:42:21.333 に答える