0

アプリケーション スコープの Bean 内に変数があります。ユーザーは、メソッド呼び出しを介してこの変数の更新をトリガーできます。ここでの問題は、jsf ページを更新した後、ユーザーがこの変数の更新されたビューを取得できないことです。変数が適切に更新されているかどうかをテストした場合、更新方法は正しく機能しています。アプリケーション スコープ Bean 内の変数は final として宣言されていますか、それともここで何が問題なのですか?

4

1 に答える 1

0

これは、間違ったアノテーションの組み合わせを使用した場合に発生する可能性があります。例えば

import javax.enterprise.context.ApplicationScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean
@ApplicationScoped
public class App {}

ここで、スコープ アノテーションは CDI からのもので、Bean 管理アノテーションは JSF からのものです。JSF は CDI スコープ アノテーションを認識しないため、デフォルトで@NoneScoped. つまり、Bean は EL#{app}評価ごとに再構築されます。これは、あなたが見ている症状を説明しています。

スコープ アノテーションも JSF からのものになるように修正する必要があります。

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;

@ManagedBean
@ApplicationScoped
public class App {}

CDI スコープ アノテーションは、CDI Bean 管理アノテーションと組み合わせてのみ使用できます@Named

于 2012-10-25T16:01:34.467 に答える