2011-03-22 162 views
1

一個快速的問題,這是更好的性能和內存明智的:性能使用JSF的outputText渲染HTML

<t:outputText escape="false" value='<tr><td>'/> 

,或只是一個直

<tr><td> 

我問,因爲我還沒有發現任何有關哪些是最佳性能方面的文檔以及JSF的一般可維護性。我相信後者會產生更易維護的代碼(您可以更容易地識別不匹配的標籤),但我不知道是否有某些人希望使用outputText顯式輸出html元素。

回答

0

只需將HTML直接放入視圖即可。不僅組件確實需要額外的內存/資源開銷,而且還希望儘量減少這些開銷,但它也可以提高可讀性。

當您使用Facelets而不是JSP作爲視圖技術時,您發佈的示例也將無法解析。

+0

我實際上收到了這個來自我公司一個不存在的組的代碼。我只是不知道是否有任何性能影響會導致團隊以這種方式開發它。 – jhutton 2011-03-23 20:58:13

+0

在古老的JSF 1.0和1.1中,不可能直接在JSF頁面中嵌入HTML。這可能是相關的,但仍然是,正確的方法是使用''。另請參閱http://stackoverflow.com/questions/3623911/what-are-the-main-disadvantages-of-java-server-faces-2-0,以獲取有關JSF特定怪異歷史的良好開端。 – BalusC 2011-03-23 20:59:24

0

恐怕第一個例子不會在所有的工作:

  1. outputText通常爲<跨度產生>標籤裏面的文字,所以它不會做你想做的編輯:看評論
  2. 有可能會逃脫<>字符,這樣就不會創建HTML標籤trtd可言,只是文本:&lt;tr&gt;&lt;td&gt;(見escape attribute

第二個一般不是一個好主意,因爲標籤是爲了輸出文本的頁面,而不是HTML標籤。

+0

聲明1本身並不正確。只有當HTML中必須有屬性時纔會這樣做,例如, 'id','styleClass'等 – BalusC 2011-03-22 21:19:38

+0

正確,我的錯誤 – 2011-03-22 21:22:35