在 JSF 2.2 中使用 OmniFaces 2.1 ViewScoped 和 Spring 3.1.0
Using OmniFaces 2.1 ViewScoped with Spring 3.1.0 in JSF 2.2
我正在尝试将某些页面转换为查看范围(从会话范围)以启用多个浏览器选项卡以支持显示数据表中多个条目的数据。
有谁知道按照这个 PrimeFaces 博客 Porting JSF 2.0′s ViewScope to Spring 3.0 中的步骤是否可以扩展 Spring 以使用来自 Omnifaces 2.1 的 org.omnifaces.cdi.ViewScoped
?
您可以使用您找到的博客中描述的方法。只有您不这样做,也不能以这样的方式进行移植,以至于它在幕后实际上使用了特定的 @ViewScoped
注释。基本上,您应该实现与这些注释在幕后使用相同的代码。
标准 JSF @ViewScoped
和 OmniFaces @ViewScoped
在幕后所做的与博客中描述的基本相同:通过 UIViewRoot#getViewMap()
引用 bean 实例。只是,JSF 2.0/2.1 @ViewScoped
没有在所有情况下正确触发 bean 的 @PreDestroy
。例如。当底层 HTTP 会话过期时,它们不会被调用。 OmniFaces 为 JSF 2.0/2.1 用户解决了这些问题。 JSF 本身在 2.2 中已经解决了它们。所以在 JSF 2.2 中并没有真正使用 OmniFaces @ViewScoped
的理由。
虽然我想在这里暗示我在未来的 OmniFaces 2.2 计划添加一个 beforeunload
挂钩到 <o:form>
当 OmniFaces @ViewScoped
bean 被使用,所以当用户通过 GET 导航离开,或刷新页面,或关闭浏览器时,bean 也会真正被销毁 window,使其再次变得更有用:)
我正在尝试将某些页面转换为查看范围(从会话范围)以启用多个浏览器选项卡以支持显示数据表中多个条目的数据。
有谁知道按照这个 PrimeFaces 博客 Porting JSF 2.0′s ViewScope to Spring 3.0 中的步骤是否可以扩展 Spring 以使用来自 Omnifaces 2.1 的 org.omnifaces.cdi.ViewScoped
?
您可以使用您找到的博客中描述的方法。只有您不这样做,也不能以这样的方式进行移植,以至于它在幕后实际上使用了特定的 @ViewScoped
注释。基本上,您应该实现与这些注释在幕后使用相同的代码。
标准 JSF @ViewScoped
和 OmniFaces @ViewScoped
在幕后所做的与博客中描述的基本相同:通过 UIViewRoot#getViewMap()
引用 bean 实例。只是,JSF 2.0/2.1 @ViewScoped
没有在所有情况下正确触发 bean 的 @PreDestroy
。例如。当底层 HTTP 会话过期时,它们不会被调用。 OmniFaces 为 JSF 2.0/2.1 用户解决了这些问题。 JSF 本身在 2.2 中已经解决了它们。所以在 JSF 2.2 中并没有真正使用 OmniFaces @ViewScoped
的理由。
虽然我想在这里暗示我在未来的 OmniFaces 2.2 计划添加一个 beforeunload
挂钩到 <o:form>
当 OmniFaces @ViewScoped
bean 被使用,所以当用户通过 GET 导航离开,或刷新页面,或关闭浏览器时,bean 也会真正被销毁 window,使其再次变得更有用:)