2008-10-20 40 views
4

我記得和一羣開發人員一起開發一個項目,他們總是希望靜態的 html文本位於out標籤內(<c:out value="words" />)。我不記得爲什麼 這種情況。使用jstl out標籤真的是最佳實踐嗎?

這是建立jsp頁面的最佳實踐嗎? 這種方法的優點/缺點是什麼?

回答

10

這對靜態文本來說是一個糟糕的主意。然後,對靜態和動態生成的東西沒有障礙。

除了這,在Servlet規範2.3 +你可以有靜態文本混合動態文本:

這是靜態的,不是${dynamic}文本。

唯一的理由使用c:out標籤,在我的經驗:

  1. 您所使用的舊版Servlet規範,並需要他們的輸出動態文本以某種方式

  2. 你想逸出HTML輸出,以避免使用<>等,與他們的控制代碼替換&符號等

ö無論如何,讓他們使用靜態文本混淆了程序員或維護者......現在我把它放在哪裏EL?它在c:out標籤中......但其他50行靜態文本也是如此!

3

如果您只是打印純文本,最好在HTML中完成。 c:out標籤的優點是您可以評估標籤內的表達式。

<c:out value="Hello ${user.firstName} ${user.lastName}"/> 
+0

當容器能夠直接提供EL支持時,Servlet Spec 2.3+中的優勢就消失了。因此,c:out不應該僅用於在Servlet Spec 2.3+容器中輸出EL,而Hello $ {user.firstName} $ {user.lastName}在沒有c:out的情況下可讀性更強。 – MetroidFan2002 2008-10-20 19:55:10

+1

請注意,EL不會轉義特殊的HTML字符。如果EL正在輸出用戶提供的數據,則應用程序將面臨諸如跨站點腳本等令人討厭的安全漏洞。 – laz 2008-10-20 20:32:37