輸出指令
${}過濾輸出
輸出表達式的計算結果,並進行過濾,比如:過濾變量中的HTML標簽。
格式:
${expression}
示例:
${user.name}
注:HTTL缺省開啟了EscapeXmlFilter,以防止HTML注入攻擊,參見:安全示例。如果你需要更強的過濾,請自行實現Filter,並配置到value.filters。此處為運行時熱點,請注意性能。
如果輸出變量的類型為Template,則缺省不過濾,比如:${include("foo.httl")}
$!{}不過濾輸出
原樣輸出表達式的計算結果,不進行任何過濾,通常用於輸出HTML片段。
格式:
$!{expression}
示例:
$!{body}
安全示例
HTTL能根椐變量所處的位置,智能使用不同的安全過濾器,比如:
<htmL> <!-- 這里會將html變量中的引號轉成" --> <input value="${html}" /> <script type="text/javascript"> // 這里會將js變量中的引號轉成\",而不是" var value ="${js}"; </script> <style type="text/css"> .div { // 這里同樣會將css變量中的引號轉成\",而不是" font-family:"${css}" } </style>
這一個多月以來,接觸到的技術挺多,但仍有很多沒有自主學到的知識,以后還會慢慢學習總結的。這次先說說velocity吧。
velocity,是一個基於Java的模板引擎,它允許任何人僅僅簡單的使用模板語言來引用由java代碼定義的對象。 當Velocity應用於web開發時,界面設計人員可以和java程序開發人員同步開發一個遵循MVC架構的web站點。這是很好的一個地方,可以提高很多效率。下面來說下velocity的語法吧。
1.獲取:
$!(var):如果有值則輸出,如果為空,則不顯示;
${var}:如果有值則輸出,如果為空,則將該代碼原樣輸出;
2.設置:
#set{$var=5}:設置var的值為5;
3. 判斷:
#if{! $var}判斷var為空
#elseif{$var}判斷var不為空
#else{}
#end
4.循環:
循環數組或List時:
#foreach($var in list)
##輸出當前迭代的次數
$velocityCount
${var}
#end
5.判斷是否為null
1)使用 #ifnull() 或 #ifnotnull()
#ifnull ($foo)
要使用這個特性必須在velocity.properties文件中加入:
userdirective = org.apache.velocity.tools.generic.directive.Ifnull
userdirective = org.apache.velocity.tools.generic.directive.Ifnotnull
2) 使用null工具判斷
#if($null.isNull($foo))