在保持状态的同时摆脱 ViewExpireException



我需要在服务器或客户端中保留一些状态,以允许我的用户继续在搜索结果页面中搜索关键字。(它是某些产品的基本搜索引擎,其第一页是谷歌,搜索结果是第二页。

我尝试了推荐的解决方案:

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>

并将其与

session.setMaxInactiveInterval(10);

用于测试。但似乎状态没有保存,在下一个POST单击keywords,我的SessionScoped豆子products丢失了。

有解决办法吗?解决方法?向用户显示your session expired错误消息真的很尴尬,他们甚至不需要登录。

会话范围的 bean 绑定到 HTTP 会话。当它过期时,它们将被重新创建。

您可能打算使用视图范围的 Bean。它不绑定到 HTTP 会话,而是绑定到 JSF 视图状态。当您使用客户端状态保存时,它永远不会过期,正如您实际配置的那样。

另一种方法是直接无状态,简单地使用请求范围的 bean(通过表单中的纯 HTML 隐藏字段保留状态;基本上你正在接管javax.faces.ViewState的工作)。

另请参阅:

  • 如何选择合适的豆类范围?
  • javax.faces.application.ViewExpireException: View 无法恢复

相关内容

  • 没有找到相关文章