【问题标题】:Firefox overrides javax.faces.ViewState with old value on F5, how to turn off autocompleteFirefox 用 F5 上的旧值覆盖 javax.faces.ViewState,如何关闭自动完成
【发布时间】:2013-08-27 08:46:18
【问题描述】:

我在 Tomcat 7 上使用 JSF 2.1,并在 Firefox 23.0.0.1 中打开它。

页面按预期生成javax.faces.ViewState隐藏输入字段:

<input type="hidden" value="2442695108697186454:-4079620282104128276" id="javax.faces.ViewState" name="javax.faces.ViewState">

当按下 F5 时,服务器会为javax.faces.ViewState 发送一个新的 id,这是正确的。但是,Firefox 将旧值保留在隐藏输入中。结果是旧的视图范围 bean 被 ajax 请求采用。

只有当我通过 Strg/Ctrl+F5 强制刷新时,Firefox 才会从服务器获取新值。我认为这是 Firefox 的一个功能(我经常在使用表单重新加载页面时看到 Firefox 保留我的输入)。

任何想法如何处理?我认为它与Preventing Firefox from remembering the input value on refresh with Meta tag 有关,但是如何将autocomplete="off" 放在这个JSF 生成的隐藏输入组件上?

【问题讨论】:

    标签: firefox jsf-2 autocomplete viewstate


    【解决方案1】:

    Mojarra 从 1.2 版开始默认添加 autocomplete="off" 到视图状态隐藏字段。显然,您的 web 应用程序被配置为禁用它,因为开发人员出于某种原因担心 W3 HTML 验证器,或者 HTTP 响应正文可能通过了一些过分热心的 (X)HTML 格式过滤器。 &lt;input type="hidden"&gt; 中的 autocomplete="off" 在 (X)HTML 中无效。

    web.xml 中查找以下上下文参数。如果它存在,请摆脱它。它已经默认为true

    <context-param>
        <param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
        <param-value>false</param-value>
    </context-param>
    

    或者,如果您确实有这样的格式过滤器,请查看其文档如何告诉它不要删除 (X)HTML 无效属性。

    另见:

    【讨论】:

    • 不客气。如果 W3 一致性真的那么重要,请考虑渲染 &lt;input type="text" style="display:none"&gt; 而不是 &lt;input type="hidden"&gt;。然而,这远远超出了 IMO。
    猜你喜欢
    • 2017-07-21
    • 2020-01-09
    • 2013-03-14
    • 2012-05-29
    • 2011-10-23
    • 2017-09-24
    • 2012-02-17
    • 2013-03-03
    • 2015-03-26
    相关资源
    最近更新 更多