【发布时间】:2016-08-22 19:15:31
【问题描述】:
我一直在使用 cookie 跨会话共享非敏感数据。我想在用户注销事件时从当前会话中存储一些 lastUsedEntity (字符串文字),以便可以在下一次登录会话中读取/使用该实体。所述实体属于我的应用程序的会话 bean。
我决定在会话 bean 的@PreDestroy 方法中提取并存储这个实体。该方法在应用程序的会话超时时成功运行。但是存储cookie失败,因为FacesContext.getCurrentInstance()在@PreDestroy方法中为null,可能是因为JSF生命周期请求-响应周期到那时完成。我尝试在我的会话 bean 的 @PostContruct 方法中缓存 FacesContext.getCurrentInstance(),以便我可以访问面部上下文缓存的实例,但后来我遇到了另一个问题 java.lang.IllegalStateException at com.sun.faces.context.FacesContextImpl.assertNotReleased,因为我使用 FacesContext 作为会话范围类的实例变量。如果我能在这里提出一些建议或任何其他更好的想法,以便保留我的旧会话数据以供在这种情况下进一步使用,我将不胜感激。
【问题讨论】: