【问题标题】:ViewExpiredException: View could not be restored when using aj4:pollViewExpiredException: 使用 aj4:poll 时无法恢复视图
【发布时间】:2016-07-17 07:07:26
【问题描述】:

我使用 a4j:poll 来保持会话处于活动状态,但经过一些空闲时间后,我收到“无法恢复视图”错误。我相信民意调查正在后台创建视图,并且在达到 15(?) 的限制后会引发异常。

<h:form>
    <a4j:poll id="poll" interval="30000"/>
</h:form>

web.xml:

<session-config>
    <session-timeout>1</session-timeout>
    <cookie-config>
        <secure>true</secure>
    </cookie-config>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

BalusC 说: “因此,只有当您手动将该限制设置得太低,或者您在后台不断创建新视图(例如,通过实施不善的民意调查)时,才会发生这种情况。” 在:javax.faces.application.ViewExpiredException: View could not be restored

我相信这是我的问题,但我不知道如何让它正确:(

【问题讨论】:

  • 您是否尝试过为表单分配 ID?也许自动生成的 id 没有导致浏览量增加

标签: session jsf web.xml ajax4jsf


【解决方案1】:

您确定这是重现问题的完整场景吗? 在这种情况下,问题是您设置为 1 秒的会话超时。 如果这不是您的情况,请编辑您的问题。

我发现的另一个问题是多部分表单中的 a4j:poll。

<h:form enctype="multipart/form-data">
    <a4j:poll id="poll" interval="30000"/>
</h:form>

避免这种情况,它会在每个轮询请求上创建一个新的视图 ID。

在每个 ajax 请求上都会返回一个 View ID,只要 View ID 始终相同就可以了。如果您在每个请求中都获得了新的 View ID,则说明您的页面中的 ajax 请求存在问题。

【讨论】:

    猜你喜欢
    • 2011-11-22
    • 2016-12-19
    相关资源
    最近更新 更多