【发布时间】:2016-06-18 08:54:53
【问题描述】:
我有一个未受保护的登录页面,可通过不同的导航案例访问。
问题:许多用户访问该登录页面并使其打开一段时间,然后再次登录。繁荣!可怕的 ViewExpiredException 发生了!我想避免 ViewExpiredException 让他们再次登录。我不想要所有视图的解决方法,而只是页面上的标志。
我无法迁移到 JSF2(出于预算原因)。
我有这个配置:
javax.faces.STATE_SAVING_METHOD = server
这是我无法改变的(我们有一个有限的带宽和机制来阻止比输入字段非常有限的小表单页面更大的 http 请求。
有什么想法吗?
【问题讨论】:
-
如果您使用的是 Mojarra(不是 MyFaces),您只能通过将上下文参数
com.sun.faces.enableRestoreView11Compatibility设置为true为整个应用程序(而不是单个页面)配置它。这可以接受吗? -
好吧,也许吧!当视图过期时,其他页面会发生什么?我会像您在之前的帖子中所说的那样获得一些“WTF”经验吗?
-
仅当您依赖于视图作用域状态时,但在 JSF 1.x 中,“视图作用域”已经不作为托管 bean 作用域存在。如果您使用类似 Tomahawk 的
来模拟 JSF 2.x 视图范围,那么它可能会以“WTF”体验结束,因为 引用的 bean 将从头开始重建,而不是当视图过期时重用(所以你得到一个全新的 bean,而不是错误页面) -
好的,enableRestoreView11Compatibility 的有趣之处在于它重新呈现了登录页面,而不是遵循我的应用程序中定义的导航规则。所以我最终再次进入我的登录页面..但没有 ViewExpiredException :(
-
嗯。另一种方法是保留它并使用纯 HTML
标签: jsf jsf-1.2 viewexpiredexception