这就是我在输出HTML文档(由JSF 2.0 / Mojarra 2.0.3生成)中所拥有的:
<input type="hidden" name="javax.faces.ViewState"
id="javax.faces.ViewState" value="4267906931114993858:-6309146738430577631"
autocomplete="off" />
我的文档应符合XHTML 1.1
,其中属性autocomplete
无效且id
属性在所有表单上都是重复的。如何指示JSF生成严格符合XHTML的所有内容?
答案 0 :(得分:3)
请参阅。
<context-param>
<param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.enableViewStateIdRendering</param-name>
<param-value>false</param-value>
</context-param>
答案 1 :(得分:2)
如果ID javax.faces.ViewState是一个出现的错误,那么非唯一用途Oracle将无法修复。他们关闭了这些门票。没有解决方法。
答案 2 :(得分:1)
如何指示JSF生成 一切都严格遵守 XHTML?
这不是用简单的标志“指示”JSF实现的问题。这是必须不断检查的东西,因此只有在项目被认为重要的时候才有可能。 XHTML严格规定了很多限制因此通常不被认为值得支持 - 请参阅this bug。另请注意,您使用 的任何组件库都必须支持它。
你可以在XHTML 1.0 Transitional上获得更多好运 - 我可以确认MyFaces确实产生了有效的XHTML 1.0 Transitional(一旦你将上下文参数org.apache.myfaces.RENDER_VIEWSTATE_ID设置为false)。
答案 3 :(得分:1)
这个问题有一个解决方案,它是在JSF的1.2_14版本中创建的。我认为问题与Firefox在隐藏字段上的重置事件(输入类型=重置)期间的操作方式有关。存在隐藏字段上的客户端viewState变为不一致状态的问题。解决此问题的方法是严格禁用自动完成(这不符合XHTML)。最有趣的是,直到1.2_14几乎每个人都生活在这个潜在的错误中。因此,JSF-RI实现(Mojarra项目)允许开发人员使用您可以在web.xml中编辑的参数来禁用此选项,并且此自动完成将不再打印。
<context-param>
<description>Put your description here :)</description>
<param-name>com.sun.faces.autoCompleteOffOnViewState</param-name>
<param-value>false</param-value>
</context-param>
使用基于组件的框架(如JSF)生成有效的XHTML页面确实很困难,但至少存在解决此问题的解决方案。
答案 4 :(得分:0)
禁用ViewState隐藏输入字段的autocomplete="off"
不是一个好主意,因为Firefox不会刷新页面刷新时的ViewState-Id。这导致无法使用的JSF表单和功能。
有关详细信息,请参阅this帖子。