工做之後,我愈來愈能體會到80/20法則的強大。
這是一個不能否認的事實,經常使用 20% 的技術能夠解決工做中 80% 的場景。
因此我但願能介紹給你 Velocity 技術 20%,幫助你勝任 80% 的工做。html
廢話少說,進入正題。java
Velocity 是一個基於Java的模版引擎,它提供模版語言用於引用Java代碼定義的對象。code
單行 ##
多行 #* *#
代碼塊註釋(信息) ##* *#
htm
定義:對象
#set( $foo = "Velocity" )
使用:ci
$foo ${foo}
#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] )
#if( $foo < 10 ) <strong>Go North</strong> #elseif( $foo == 10 ) <strong>Go East</strong> #else <strong>Go West</strong> #end
#foreach( $customer in $customerList ) #if( $foreach.count > 5 ) #break #end $customer.Name #end
#include( "one.vm" ) one.vm 不解析。 #parse( "me.vm" ) me.vm 解析。
#define( $block ) Hello $who #end #set( $who = 'World!' ) $block
#macro( d ) <tr><td></td></tr> #end #d()
#macro( d ) <tr><td>$!bodyContent</td></tr> #end #@d()Hello#end
定義文檔
#macro( tablerows $color $somelist ) #foreach( $something in $somelist ) <tr><td bgcolor=$color>$something</td></tr> #end #end
調用字符串
#set( $greatlakes = ["Superior","Michigan","Huron","Erie","Ontario"] ) #set( $color = "blue" ) <table> #tablerows( $color $greatlakes ) </table>
輸出get
<table> <tr><td bgcolor="blue">Superior</td></tr> <tr><td bgcolor="blue">Michigan</td></tr> <tr><td bgcolor="blue">Huron</td></tr> <tr><td bgcolor="blue">Erie</td></tr> <tr><td bgcolor="blue">Ontario</td></tr> </table>
1. 各類寫法it
$foo ## is the same as ${foo} $foo.getBar() ## is the same as $foo.Bar $data.setUser("jon") ## is the same as #set( $data.User = "jon" ) $data.getRequest().getServerName() ## is the same as $data.Request.ServerName ## is the same as ${data.Request.ServerName}
2. Velocity 變量未定義
使用 $!
,例
$!foo
當 foo 未定義,輸出空白字符串。
3. Velocity 調用順序
Velocity中$customer.address
,調用順序:
getaddress() getAddress() get("address") isAddress()
4. #if ($foo)
兩種狀況都返回true:
(1)$foo是一個 boolean 類型,且爲 true。
(2)$foo不是 0,也不是 null。
5. #if ($foo == $bar)
由於Velocity變量最終都做爲字符串輸出,因此Velocity會自動調用 .toString() 將變量轉換成字符串。
因此,$foo 和 $bar 都當成字符串進行比較。即便Java代碼中類型不一樣,也有可能返回true。
Velocity 1.6引入嚴格引用模式,經過設置Velocity配置屬性「runtime.references.strict」爲true激活。
當遇到沒有定義或者存在歧義的狀況Velocity將拋出異常。
但願這篇文章對你有幫助。by iamtjcn