在选项卡关闭时取消范围@ViewAccessScoped Beans
un-scope @ViewAccessScoped Beans on Tab close
我有一个 JSF 应用程序,其中包含两个 @ViewAccessScoped
个 Bean 和两个 Pages/Views,一个用于搜索的 Bean,有关 Bean 的详细信息。详细信息 Bean 引用 @ViewAccessScoped,因此当我返回搜索时数据可用。没有其他 CDI 参考资料。 WindowRenderMode 为 ClientWindowRenderMode.CLIENTWINDOW
,无需进一步配置。
目前为止效果很好。如果我转到另一个页面或注销,则 Beans 将不受范围限制。我遇到的一个问题:
当我在新的浏览器选项卡中打开我的详细信息页面时,会创建两个新的 Bean,这是预期的行为。但是当我关闭选项卡时,豆子仍然在那里。我想服务器在标签页关闭时不会收到通知。
- deltaspike 中是否有我可以用来检测的内置解决方案
选项卡是否关闭?
- 使用@ViewAccessScoped 的 Bean 是否有超时(除了会话超时)?
- 如果没有内置解决方案:我如何以编程方式取消我的 Beans 的范围?最好取消连接到该选项卡的所有 Bean 的范围(=相同的 Window-ID)(我会用 JavaScript 检测自己的关闭并在关闭时调用 Bean-Method)
否,因为在 JS 中无法捕获 "tab close" 事件。
参见:javascript detect browser close tab/close browser
它在 CODI 中可用,但未迁移到 DeltaSpike。
参见:https://issues.apache.org/jira/browse/DELTASPIKE-437
您可以通过 WindowContext API:
@Inject private org.apache.deltaspike.core.spi.scope.window.WindowContext windowContext;
public void closeIt() {
windowContext.closeWindow("myWindowId");
}
我有一个 JSF 应用程序,其中包含两个 @ViewAccessScoped
个 Bean 和两个 Pages/Views,一个用于搜索的 Bean,有关 Bean 的详细信息。详细信息 Bean 引用 @ViewAccessScoped,因此当我返回搜索时数据可用。没有其他 CDI 参考资料。 WindowRenderMode 为 ClientWindowRenderMode.CLIENTWINDOW
,无需进一步配置。
目前为止效果很好。如果我转到另一个页面或注销,则 Beans 将不受范围限制。我遇到的一个问题: 当我在新的浏览器选项卡中打开我的详细信息页面时,会创建两个新的 Bean,这是预期的行为。但是当我关闭选项卡时,豆子仍然在那里。我想服务器在标签页关闭时不会收到通知。
- deltaspike 中是否有我可以用来检测的内置解决方案 选项卡是否关闭?
- 使用@ViewAccessScoped 的 Bean 是否有超时(除了会话超时)?
- 如果没有内置解决方案:我如何以编程方式取消我的 Beans 的范围?最好取消连接到该选项卡的所有 Bean 的范围(=相同的 Window-ID)(我会用 JavaScript 检测自己的关闭并在关闭时调用 Bean-Method)
否,因为在 JS 中无法捕获 "tab close" 事件。 参见:javascript detect browser close tab/close browser
它在 CODI 中可用,但未迁移到 DeltaSpike。 参见:https://issues.apache.org/jira/browse/DELTASPIKE-437
您可以通过 WindowContext API:
@Inject private org.apache.deltaspike.core.spi.scope.window.WindowContext windowContext; public void closeIt() { windowContext.closeWindow("myWindowId"); }