如何让JSF呈现符合XHTML1.0的严格要求?
我需要开发一个web应用程序,它必须符合“Stanca法案”(Legge Stanca)。到目前为止,我已经使用了jsf2.0(Mojarra)+primefaces 3.2,但在使用时存在验证问题如何让JSF呈现符合XHTML1.0的严格要求?,jsf,jsf-2,doctype,xhtml-1.0-strict,Jsf,Jsf 2,Doctype,Xhtml 1.0 Strict,我需要开发一个web应用程序,它必须符合“Stanca法案”(Legge Stanca)。到目前为止,我已经使用了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
<!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不支持表单标记中的属性名称 斯坦卡法案
- 文档类型此处不允许元素“输入”(仅在 (表格)
- doctype不支持属性自动完成
有没有办法解决这个问题?jsf生成的页面是否可能没有使用严格的验证?标准jsf HTML呈现程序是根据XHTML 1.0设计的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
但是,您可以始终使用HTML5 doctype
<!DOCTYPE html>
它比XHTML1.0StrictDocType更灵活,并且仍然强制浏览器处于标准模式
如果确实打算使用XHTML 1.0 Strict,则需要设置以下上下文参数(仅限Mojarra):
com.sun.faces.autoCompleteOffOnViewState
假的
com.sun.faces.enableViewStateIdRendering
假的
和/或修改相应组件的渲染器。当某些过度热心的浏览器通过某种自动完成方式修改视图状态值时,您只会面临查看过期异常的风险。谢谢!不幸的是,问题仍然存在。使用上下文参数,我能够解决自动完成的问题,但不能解决前两项,因此cocument不会验证。你知道吗?
<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>