3

我的问题与这个(可能还有其他)有关:

@PreDestroy 从未调用过 @ViewScoped

如那里所述,没有简单的解决方案可以在导航时销毁视图范围的 bean,并且会话到期时似乎也是如此。

释放(调用方法)JSF 视图范围 bean 的非平凡方法@PreDestroy会是什么样子,或者更具体地说,一旦会话到期,会是什么样子?

我在 GlassFish 3.1.2 上使用 Java EE 6 和 Mojarra 2.1.x。

4

1 回答 1

5

创建一个@SessionScopedbean 来保存资源(在某个集合/数组中?)并将其注入@ViewScopedbean,然后依赖@PreDestroy会话范围 bean 的。

诚然,这样资源的寿命比您想要的要长一些,但这是您可以获得的最简单和最可靠的解决方案。如果您想将 bean 保留@PreDestroy在视图范围的 bean 中,那么您需要以某种方式确保最终用户始终通过 HTTP POST 请求对这个视图范围的 bean 执行导航。您不能可靠地保证(最终用户的 PC 可能会崩溃等等)。

于 2012-10-26T11:21:03.070 回答