私のプロジェクトには次の問題があります。
次の構成を持つ 2 つのマネージド Bean があります。
@ManagedBean
@SessionScoped
public class SessionBean {
private PersonnelFile personnelFile; // + getters/setters
}
@ManagedBean
@ViewScoped
public class ViewBean {
@ManagedProperty("#{sessionBean}")
private SessionBean sessionBean;
public void selectPersonnel() {
sessionBean.getPersonnelFile().setPerson(new Person());
}
}
これはすべてのコードではありませんが、状況の一般的なアイデアを示しています。
- セッションオブジェクトを保持する SessionScoped Bean
- ビュー関連のオブジェクトと SessionScoped Bean への参照を保持する ViewScoped Bean
問題は次のとおりです。
- ビューにアクセスします
- 私は同じビューにいくつかのポストバックを行い、毎回ビューに戻ってきます..これまでのところとても良い
- ある時点で、ビューからの情報を使用して SessionScoped Bean にセッションオブジェクトを設定し、ビューを離れます...これまでのところとても良いです
- ここで、このビューに戻ると、彼は新しい ViewScoped Bean インスタンスを作成し (予想どおり)、SessionScoped Bean を元に戻します (ManagedProperty アノテーションのため)。
- これをデバッグすると、SessionScoped Bean への参照が同じままであるため、同じオブジェクトであることがわかります。
- ただし、以前に SessionScoped Bean に設定したオブジェクトは になりました。これ
null
は、そのオブジェクトに関するセッション情報を「失った」ことを意味します。 - SessionScoped Bean でこのオブジェクトをリセットしたことはないので、どこで問題が発生したのかわかりません...
さらに説明が必要な場合、またはこの質問をより適切に表現したい場合は、お知らせいただくか、編集ボタンを使用してください。