Java EE 6 - ViewScoped中的@PreDestroy&会话bean从未调用过

时间:2012-10-01 08:19:54

标签: java jsf java-ee view-scope

正如我在this topic中写的那样,我需要在用户关闭或更改页面时调用某些操作。我以为我可以在我的视图作用域中使用@PreDestroy,但它永远不会被调用(即使会话过期)。这是一个错误吗?我使用Glassfish 3.1.2。

任何其他建议如何在用户离开页面时调用bean方法? javascript window.onunload好主意吗?

1 个答案:

答案 0 :(得分:0)

即使bean是视图作用域,容器也有责任决定何时收集和销毁未使用的资源。

用于定义范围的注释表示托管bean必须存活多长时间,但是不能保证它们何时会被销毁。

正如您所建议的,JavaScript可以解决您的问题。另见这个答案:How to detect unsaved data in form when user leaves the page?