我正在尝试将一些页面转换为 View 范围(从 session 范围),以使多个浏览器选项卡支持显示数据表中多个条目的数据。
有谁知道是否按照 PrimeFaces 博客 Porting JSF 2.0′s ViewScope to Spring 3.0 中的步骤进行操作将努力扩展 Spring 使用 org.omnifaces.cdi.ViewScoped
来自 Omnifaces 2.1?
最佳答案
您可以使用您找到的博客中描述的方法。只是您没有也不可能以这样的方式进行移植,以至于它在幕后实际上使用特定的 @ViewScoped
注解。基本上,您应该使用与这些注释相同的代码来实现。
都是标准 JSF @ViewScoped
和 OmniFaces @ViewScoped
在幕后做的事情基本上与博客中描述的相同:通过 UIViewRoot#getViewMap()
引用 bean 实例。仅,JSF 2.0/2.1 @ViewScoped
没有正确触发@PreDestroy
在所有情况下都是 bean 。例如。当底层 HTTP session 过期时,它们不会被调用。 OmniFaces 已经为 JSF 2.0/2.1 用户解决了这些问题。 JSF 本身已经在 2.2 中解决了这些问题。因此,在 JSF 2.2 中,没有真正理由使用 OmniFaces @ViewScoped
。
尽管我想在这里暗示我对于 future 的 OmniFaces 2.2 计划添加 beforeunload
Hook <o:form>
当 OmniFaces @ViewScoped
使用 bean,这样当用户通过 GET 导航离开、刷新页面或关闭浏览器窗口时,bean 也会真正被销毁,从而使其再次变得更加有用:)
关于spring - 在 JSF 2.2 中使用 OmniFaces 2.1 ViewScoped 和 Spring 3.1.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32019344/