[English]
2012-08-05 20:03 墳墓 (Brian Hsu) 在 Lift 中使用 XHTML5
話說趁這幾天放連假,在做自己需要用的 GTD 網站,用的當然是 Lift Web Framework 這套有趣的 Scala 網頁框架。
Lift 的模板系統,本來就提供了 XHTML 1.0 和 HTML 5 兩種模式。一開始因為想要用一些 placeholder 之類的 HTML5 的新功能,又不想看到 W3C Validator 出現一堆錯誤,所以就選擇用 HTML 5 的 Html5Properties。
但今天愈想愈不對,Lift 的其中一個好處就是模版系統很嚴格,他可以確認你的模版是合法的 XHTML 文件,該關的 <div> 有關之類的,或是開始和結束標籤名稱都正確才會讓你過關。可是如果改採用 HTML 5 的話,因為 Parser 比較寬鬆,會讓明明有問題的 html 檔也過關。
雖然 Lift 也提供了 XHtmlInHtml5OutProperties 這個東西,可以讓你的模版採用 XHTML,然後吐 HTML5 給瀏覽器,但我還是希望最後吐出來的可以是 XHTML5。
於是研究了一下之後,發現要達到這功能還滿簡單的,只要在 class Boot 當的 def boot 中加入下面這一段程式碼就好了:
import net.liftweb.http.Req
import net.liftweb.http.Html5Properties
import net.liftweb.http.OldHtmlProperties
import net.liftweb.http.XHtmlInHtml5OutProperties
class Boot {
def boot
{
// ....
LiftRules.htmlProperties.default.set { r: Req =>
val xhtml = new OldHtmlProperties(r.userAgent)
val html5 = new XHtmlInHtml5OutProperties(r.userAgent)
html5.setHtmlWriter(xhtml.htmlWriter)
}
}
}
回響