我有一个带有两个@ViewAccessScoped
Bean和两个页面/视图的JSF-App,一个用于搜索的Bean,用于详细信息。细节Bean引用@ViewAccessScoped,以便在我返回搜索时可用的数据。没有其他CDI参考。 WindowRenderMode为ClientWindowRenderMode.CLIENTWINDOW
,无需进一步配置。
到目前为止这种方法效果很好。如果我去另一个页面或注销,Beans会取消范围。我遇到的一个问题: 当我在新的浏览器选项卡中打开我的详细信息页面时,会创建两个新的Bean,这是预期的行为。但当我关闭标签时,豆子仍在那里。我想当标签关闭时,服务器不会得到通知。
答案 0 :(得分:2)
不,因为无法抓住"标签关闭" JS中的事件。 请参阅: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");
}