2012-02-29 53 views
3

我需要開發一個必須符合「Stanca act」(Legge Stanca)的Web應用程序。我用JSF2.0(鑽嘴魚科)+ primefaces 3.2到目前爲止,但我有驗證問題,當我使用如何讓JSF呈現符合XHTML 1.0嚴格?

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

是否有解決這個問題的方式支持? jsf生成的頁面是否可能不使用Strict進行驗證?

回答

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嚴格DOCTYPE更靈活,仍然強制瀏覽器處於標準模式。

如果你真的打算使用XHTML 1.0 Strict,則你需要設置以下上下文參數(鑽嘴魚科只):

<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

+0

謝謝!不幸的是,問題仍然存在。使用上下文參數我能夠解決自動完成問題,但不是前兩項,因此該文檔不驗證。有關它的任何想法? – maxqua72 2012-03-01 07:53:31