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