gpt4 book ai didi

session - 如何设置 View 超时?

转载 作者:行者123 更新时间:2023-12-04 03:22:18 25 4
gpt4 key购买 nike

在JBoss 7.1.1上的 JSF2 项目中,我们在web.xml中定义了一个 session 超时,它工作得很好。

但是,有时我们会导致 View 过期,即使 session 仍然存在,也会导致类似这样的错误:

javax.faces.application.ViewExpiredException: viewId:/... - View /... could 
not be restored.

我们可以像在 session 中那样在哪里 设置 View 超时?还是 View 过期是由其他原因引起的?

最佳答案

ViewExpiredException的另一个原因是在 session 中创建了太多的逻辑 View 。缺省限制是特定于JSF实现的,并且特定 View 上的每个同步GET请求基本上都会创建一个新 View 。因此,例如,当您使用Mojarra(默认限制为15)并启动浏览器 session 并在16个不同的选项卡中打开相同的 View ,然后在第一个选项卡中提交表单时,也可能会遇到此异常。可以使用JSF实现特定的上下文参数来配置该限制,该参数对于Mojarra是 com.sun.faces.numberOfLogicalViews ,在MyFaces中是 org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION (默认为20)。
但是,这是一个非常罕见的现实问题。如果您的Web应用程序确实是设计用于这种方式的(例如,邀请在多个选项卡中打开的社交/社区网站,例如讨论论坛或Q&A),那么您可以考虑使用客户端状态保存。
也可以看看:

  • javax.faces.application.ViewExpiredException: View could not be restored
  • com.sun.faces.numberOfViewsInSession vs com.sun.faces.numberOfLogicalViews
  • 关于session - 如何设置 View 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12562469/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com