【问题标题】:@org.omnifaces.cdi.ViewScoped invokes @PostConstruct on unload of an already destroyed view@org.omnifaces.cdi.ViewScoped 在卸载已销毁的视图时调用 @PostConstruct
【发布时间】:2018-09-24 12:51:28
【问题描述】:

我在使用 @org.omnifaces.cdi.ViewScoped 和多个标签时遇到问题:

我在 TestPage.xhtml 中有一个链接,它打开另一个页面 (ShowValuePage.xhtml),请求参数为“someValue”。如果我在新选项卡中打开此链接 10 次并在第一个打开的选项卡中导航离开,PostConstruct 将再次被调用,而不仅仅是导航离开。

如果我多次从 ShowValuePage 导航回 TestPage,也会发生同样的情况。 (要对此进行测试,我们必须多次单击“显示值”和“主页”链接)。

仅当打开的选项卡多于 web.xml 值“numberOfLogicalViews”和“numberOfViewsInSession”中定义的选项卡时,才会发生这种情况。

我已经建立了一个显示这个问题的小项目。该过程的确切描述可以在 readme.txt 中找到。

Project on github

有解决办法吗?

谢谢你和最好的问候

海因里希

PS:我将其报告为bug on Omnifaces,但一周后我没有得到答复。

【问题讨论】:

  • 所以它可以与普通的 jsf/cdi ViewScoped 注释一起使用?
  • 对我来说,这种行为有点像预期的那样,Tab != View。在多个选项卡中打开同一页面与在一个选项卡中重新加载同一页面然后返回 x 次(在您的情况下为 10 次)相同。顺便说一句,你在上一些课程吗? 1 周内由不同的人提出 3 个相似/相同/相关的问题。在这种情况下,Deltaspike windowscoped 更适合您
  • jsf/cdi Viewscoped 注释对我们不起作用。使用 javax.faces.bean.ViewScoped 我们遇到了问题,如果我们在多个选项卡中工作并在第一个选项卡中关闭一个 groupConversationScope,那么第二个选项卡中的所有 viewScopes 也会被关闭。
  • 不,我多次打开一个链接,这会打开另一个页面。然后我通过单击链接从第一个 openend 选项卡导航到另一个页面。这不应该重新加载页面,这应该导航,而不重新加载当前页面。

标签: jsf omnifaces view-scope postconstruct


【解决方案1】:

它已在 OmniFaces 2.7.1 和 3.3 中修复。

这些症状是由显式重定向引起的,该重定向最初是为了触发任何身份验证框架,该框架记住“最后一个受限请求”以记住正确的请求,以防会话过期。这已通过仅在会话实际上是新会话时发送重定向来解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多