Velocity $ 和$! 區別


輸出指令

${}過濾輸出

輸出表達式的計算結果,並進行過濾,比如:過濾變量中的HTML標簽。

格式:
${expression}
 
示例:
${user.name}

 

注:HTTL缺省開啟了EscapeXmlFilter,以防止HTML注入攻擊,參見:安全示例。如果你需要更強的過濾,請自行實現Filter,並配置到value.filters。此處為運行時熱點,請注意性能。

如果輸出變量的類型為Template,則缺省不過濾,比如:${include("foo.httl")}

$!{}不過濾輸出

原樣輸出表達式的計算結果,不進行任何過濾,通常用於輸出HTML片段。

格式:
$!{expression}
 
示例:
$!{body}

 

安全示例

HTTL能根椐變量所處的位置,智能使用不同的安全過濾器,比如:

<htmL>
 
<!-- 這里會將html變量中的引號轉成&quot; -->
<input value="${html}" />
 
<script type="text/javascript">
// 這里會將js變量中的引號轉成\",而不是&quot;
var value ="${js}";
</script>
 
<style type="text/css">
.div {
    // 這里同樣會將css變量中的引號轉成\",而不是&quot;
    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)) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM