JSF:清除会话Scoped Bean

use*_*194 2 java session jsf

我想知道,session.remove("userBean")在用户关闭JSF 1.2上的窗口(点击浏览器的'X')后,我将如何在JSF中执行此操作.

我想在用户点击浏览器的'X'之后弹出一个确认弹出,但不太确定我如何访问或将Ok按钮绑定到我定义的方法,在那里我有清除范围bean的逻辑.或者有更好的方法吗?

任何帮助将受到高度赞赏.

谢谢.

Bal*_*usC 6

我想知道,在用户关闭JSF 1.2上的窗口(点击浏览器的'X')之后,我将如何在JSF中执行session.remove("userBean").

你不必担心它.如果会话超时,那么肯定会删除bean.如有必要,可以控制会话超时时间<session-config>web.xml.如果你真的想挂钩会话超时/销毁,那么你可以实现HttpSessionListener和拦截sessionDestroyed(),或者UserBean实现HttpSessionBindingListener和拦截valueUnbound().

如果你真的坚持要听浏览器关闭按钮,毕竟这是非常多的工作,那么你所能做的就是使用Javascript的beforeunload事件.没有别的办法.您应该记住,这是一个不标准的事件,因此并非所有Web浏览器都支持这一事件.例如,Opera不支持此事件.简化这项工作是一项非常重要的工作,因为当您进行简单的香草导航或表单提交时,此事件也会被触发,您需要在每个"普通"链接/按钮上禁止此事件.您还需要触发Ajaxical请求以通知服务器有关关闭的信息,因为您无法更改页面位置或提交隐藏的表单,因为浏览器将被关闭.