Jsf Glassfish3中带有跟踪模式URL的ViewExpiredException

Jsf Glassfish3中带有跟踪模式URL的ViewExpiredException,jsf,primefaces,glassfish-3,Jsf,Primefaces,Glassfish 3,我们的客户不希望使用cookie进行会话处理,这也会导致Apache/mod_重写网关出现问题,因此我尝试使用 <tracking-mode>URL</tracking-mode> .另一个选项是将restore view compability设置为true 编辑web.xml并添加以下代码,然后重试 <context-param> <param-name>com.sun.faces.enableRestoreView11Compati

我们的客户不希望使用cookie进行会话处理,这也会导致Apache/mod_重写网关出现问题,因此我尝试使用

<tracking-mode>URL</tracking-mode>

.

另一个选项是将restore view compability设置为true

编辑web.xml并添加以下代码,然后重试

<context-param>
    <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
    <param-value>true</param-value>
</context-param>

com.sun.faces.enableRestoreView11兼容性
真的
更新:

com.sun.faces.enableRestoreView11Compatibility是一个JSF 1.2设置,它告诉JSF 1.2的行为与JSF 1.1类似

com.sun.faces.enableRestoreView11Compatibility==true意味着“不要抛出ViewExpiredException;相反,如果旧视图已过期,只需创建新视图。”

关于JSF 1.1行为的IBM说明说:

这可能会产生不良行为,因为这是一个新视图,并且视图中通常存在的项(如状态)不再存在

规范中对默认JSF 1.2行为的定义如下:

如果请求是回发,请调用ViewHandler.restoreView(),传递当前请求的FacesContext实例和视图标识符,并为还原的视图返回UIViewRoot。如果ViewHandler.restoreView()返回的值为null,则抛出ViewExpiredException并显示相应的错误消息。javax.faces.application.ViewExpiredException是一个FacesException `必须抛出该异常,以向应用程序发出未返回视图标识符所需视图的信号。应用程序可以根据此异常选择执行某些操作

若要在视图过期时引发ViewExpiredException,请删除com.sun.faces.enableRestoreView11Compatibility参数或将其设置为false


com.sun名称空间表明该参数是sun/Mojarra和派生的特定于实现的设置,因此它可能不适用于所有JSF实现。

通过更新Mojarra修复。我的Glassfish 3.1.2.2附带了Mojarra 2.1.6和以下错误:


更新至2.1.22,一切正常。

您的backbean ViewScope设置了吗?@Makky LoginBean设置了RequestScope,但将其更改为ViewScope并不适用“我也无能为力。这个参数意味着什么?我应该注意的任何缺点/影响?这听起来更像是一个解决办法,这是否意味着我做的一切都是正确的,但我遇到了一些错误?这是一个解决办法,请查看我的更新答案以获取更多信息。不幸的是,这没有帮助,我现在停留在我的登录页面上,而没有重定向到主页。LoginBean.login返回“/Home.xhtml?faces redirect=true”,但我看不到重定向,只有login.xhtml上的一篇文章,我的登录页面。用其他信息更新了原始问题@BalusCHendrik,我没有回答这个问题,我只是编辑了答案并修正了一些错误的格式。看,我的名字在“编辑”之后,而不是在“回答”之后。我所做的任何事情都可以通过点击“编辑”链接查看。
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
java.io.NotSerializableException
<context-param>
    <param-name>com.sun.faces.enableRestoreView11Compatibility</param-name>
    <param-value>true</param-value>
</context-param>