2011-04-04 51 views
1

我需要輸出存儲在數據庫中的html文本。該文本由豐富的編輯器生成,因此包含格式不正確的html(非封閉標籤,如<br>)。所以我有問題如何打印在頁面上。JSF不輸出非嚴格的html

如果我使用:

#{document.content} 

它輸出轉義的HTML文檔,所有標籤都顯示在頁面上(代碼本身含有「& LT;」代替<)

可見解決方案 - 使用H:用的outputText逃逸=「FALSE:

<h:outputText value="#{document.content}" escape="false" /> 

但它打印的HTML只有等到它是良好的XML形成:文本被停止在第一個<br>標籤上。看來,JSF解析document.content的內容,並在無法執行時停止。我真的不需要JSF來解析內容,只需輸出!

下面的代碼都於事無補:

<h:outputText value="lt![CDATA[#{document.content}]]gt" escape="false" /> 

回答

2

好了,這似乎是Chrome的錯誤。在我更改DOCTYPEhtml可傳遞它顯示「實體'nbsp'未定義」錯誤並且未呈現內容。但在其他瀏覽器中,一切都呈現正常!即使我將DOCTYPE回滾到xhtml嚴格 - Firefox和Opera完美地顯示了內容,並且沒有注意到格式不正確的html!

並沒有深入,但這是與Webkit - Chrome的引擎。

更新:使用< f:view contentType =「text/html」>這樣在Chrome和Safari中就可以正常工作。

希望這會幫助其他人