我需要开发一个必须符合“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>
未通过验证,因为:
有没有办法解决这个问题?是否有可能jsf生成的页面无法使用Strict进行验证?
答案 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
的风险。