如何让JSF渲染符合XHTML 1.0严格?

时间:2012-02-29 17:12:50

标签: jsf jsf-2 doctype xhtml-1.0-strict

我需要开发一个必须符合“Stanca act”(Legge Stanca)的Web应用程序。到目前为止我使用过jsf2.0(Mojarra)+ primefaces 3.2但是当我使用

时我有验证问题
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

特别是对于空表单页面,以下生成的html代码:

<form id="j_idt16" name="j_idt16" method="post" action="/econsob/faces/prova_stanca.xhtml" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="j_idt16" value="j_idt16" />
    <input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-8952155502993391596:-7459269746161777412" autocomplete="off" />
</form>

未通过验证,因为:

  • 所需的doctype不支持表单标记中的属性名称 作者:Stanca act
  • 文档类型不允许元素“输入”(正好在下面) 形式)
  • doctype 不支持
  • 属性自动填充功能

有没有办法解决这个问题?是否有可能jsf生成的页面无法使用Strict进行验证?

1 个答案:

答案 0 :(得分:4)

标准的JSF HTML渲染器是根据XHTML 1.0 Transitional设计的。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

但是,您始终可以使用HTML5文档类型。

<!DOCTYPE html>

它比XHTML 1.0 Strict doctype更灵活,仍然强制浏览器处于标准模式。

如果确实打算使用XHTML 1.0 Strict,那么您需要设置以下上下文参数(仅限Mojarra):

<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>

和/或修改相应组件的渲染器。只要某些过于热心的浏览器通过某些自动完成方式修改视图状态值,您就只会冒ViewExpiredException的风险。

相关问题