VTL(Velocity Templates Language,即Velocity模板语言)初识语法总结
1.velocity是一門基于Java語言的視圖表現層模板引擎,它可以取代jsp,比jsp更高效。
?
2.velocity變量的定義與引用
(1).定義一個變量:#set ($a = "velocity"),變量名為 $a
(2).引用上面定義的變量:Hello $a
?
3.velocity中!號的含義及使用
(1).#if ($!msg) hello?#end:若引用值 $msg 不為空則輸出 hello,否則什么都不輸出。
?
4.velocity中的循環語句語法
#foreach ($stu in $slist)
${stu.name}
${stu.age}
#end
以上$slist是從Java代碼中引用的對象,$stu是$slist中的一個元素。
?
5.velocity中的注釋
(1).單行注釋:##注釋內容
(2).多行注釋:
#*
注釋內容
*#
(3).文檔格式:
#**
This is a VTL comment block and
may be used to store such information
as the document author and versioning
information:
@version 5
@author
*#
?
6.在VTL中有三種類型的references:變量(variables)、屬性(properties)、方法(methods)。
${mudSlinger} 變量
${customer.Address} 屬性
${purchase.getTotal()} 方法
?
7.注意:VTL中未被定義的變量將被認為是一個字符串,所以以下例子:?
#set( $foo = “gibbous” )
$moon = $foo
的輸出結果是:
$moon = gibbous
?
8.注意VTL中不會將reference解釋為對象的實例變量。例如:$foo.Name將被解釋
為Foo對象的getName()方法,而不是Foo對象的Name實例變量。
?
9.#set ( $monkey.Say = [“Not”, $my, “fault”] )
例子的取值方法為:$monkey.Say.get(0)
?
10.#if ( $foo )?
<strong>Velocity!</strong>
#end
上例中的條件語句將在以下兩種條件下成立:
$foo是一個boolean型的變量,且它的值為true
$foo變量的值不為null
?
11.if else語句例子:
#if( $foo < 10 )
<strong> Go North </strong>
#elseif( $foo == 10 )
<strong> Go East </strong>
#elseif( $foo == 6 )
<strong> Go South </strong>
#else
<strong> Go West </strong>
#end
?
12.velocity的邏輯運算符:
Velocity有AND、OR和NOT邏輯運算符。下面是一些例子:
## logical AND
#if( $foo && $bar )
<strong> This AND that </strong>
#end
## logical OR
#if ( $foo || $bar )
<strong>This OR That </strong>
#end
##logical NOT
#if ( !$foo )
<strong> NOT that </strong>
#end
?
13.Velocity還特別提供了得到循環次數的方法,以便你可以像下面這樣作:?
<table>
#foreach ( $customer in $customerList )
<tr><td>$velocityCount</td><td>$customer.Name</td></tr>
#end
</table>
$velocityCount變量的名字是Velocity默認的名字,你也可以通過修改velocity.properties文件來改變它。
默認情況下,計數從“1”開始,但是你可以在velocity.properties設置它是從“1”還是從“0”開始。
?
14.include?
#include script element允許模板設計者引入本地文件。被引入文件的內容將不會通過模板引擎被render。
為了安全的原因,被引入的本地文件只能在TEMPLATE_ROOT目錄下。
#inclued ( “one.txt” )
如果您需要引入多個文件,可以用逗號分隔就行:
#include ( “one.gif”, “two.txt”, “three.htm” )
在括號內可以是文件名,但是更多的時候是使用變量的:
#inclue ( “greetings.txt”, $seasonalstock )
?
15.parse?
#parse script element允許模板設計者一個包含VTL的本地文件。Velocity將解析其中的VTL并render模板。
#parse( “me.vm” )
就像#include,#parse接受一個變量而不是一個模板。任何由#parse指向的模板都必須包含在
TEMPLATE_ROOT目錄下。與#include不同的是,#parse只能指定單個對象。
?
?
16.#stop script element允許模板設計者停止執行模板引擎并返回。把它應用于debug是很有幫助的。?
?
17.#macro script element允許模板設計者定義一段可重用的VTL template。例如:?
#macro ( d )
<tr><td></td></tr>
#end
在上面的例子中Velocimacro被定義為d,然后你就可以在任何VTL directive中以如下方式調用它:
#d()
?
?
18.其他特性和雜項?
math 在模板中可以使用Velocity內建的算術函數,如:加、減、乘、除
#set ( $foo = $bar + 3 )
#set ( $foo = $bar - 4 )
#set ( $foo = $bar * 6 )
#set ( $foo = $bar / 2 )
當執行除法時將返回一個Integer類型的結果。而余數你可以使用%來得到:
#set ( $foo = $bar % 5 )
?
?
19.開發人員最常問的問題是我如何作字符拼接?在java中是使用“+”號來完成的。?
在VTL里要想實現同樣的功能你只需要將需要聯合的reference放到一起就行了。例如:
#set ( $size = “Big” )
#set ( $name = “Ben” )
The clock is $size$name.
輸出結果將是:The clock is BigBen.。更有趣的情況是:
#set ( $size = “Big” )
#set ( $name = “Ben” )
#set ( $clokc = “$size$name” )
The clock is $clock.
上例也會得到同樣的結果。
?
轉載于:https://www.cnblogs.com/itxinke/p/7211479.html
總結
以上是生活随笔為你收集整理的VTL(Velocity Templates Language,即Velocity模板语言)初识语法总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Fresco图片加载+EventBus+
- 下一篇: 鲁泰纺织:在行业整合中稳健前行