1

我在 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 时,服务器会发送一个新的 id javax.faces.ViewState,这是正确的。但是,Firefox 将旧值保留在隐藏输入中。结果是旧的视图范围的 bean 被 ajax 请求所采用。

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

任何想法如何处理?我认为这与防止 Firefox 在使用 Meta tag 刷新时记住输入值有关,但是如何放置autocomplete="off"这个 JSF 生成的隐藏输入组件?

4

1 回答 1

1

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

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

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

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

也可以看看:

于 2013-08-27T11:06:54.790 回答