私はJavaとJSFを初めて使用します。IllegalStateExceptionについてサポートが必要です。シナリオは次のとおりです。
私の現在のプロジェクトでは、アプリケーションメニュー用に次のセッションスコープBeanを使用しています。
public final class MenuBean implements Serializable{
private MenuModel model;
private FacesContext context = FacesContext.getCurrentInstance();
public MenuModel getModel() {
return model;
}
public MenuBean() {
updateMenu();
}
public void updateMenu(){
Map session = (Map<String,Object>) context.getExternalContext().getSessionMap();
EUser user = (EUser) session.get(UserBean.USER_SESSION_KEY);
...
}
private MethodExpression createMethodExpression(String action) {
...
}
}
ロジックのある時点で、メニューを更新する必要があるので、次のようにします。
ExternalContext extContext = context.getExternalContext();
Map sMap = (Map<String,Object>) extContext.getSessionMap();
MenuBean menu = (MenuBean) sMap.get("menuBean");
menu.updateMenu();
Beanは正常に構築されますが、上記のように手動で更新しようとすると、updateメソッドの1行目にIllegalStateExceptionが発生します。updateMenu()
メニューが最初に作成されたときに同じ呼び出しでセッションマップを取得できるため、何が問題なのかわかりません。
また、NetBeansデバッガを使用すると、MenuBeanのインスタンスが正しくリカバリされていることがわかります。
助けてくれませんか?