velocity學習筆記

weixin_34129145發表於2017-09-16

變數的定義

#set($name = "hello")
變數引用盡量規範
Java is Hello ${name}

變數賦值

#set($P{monkey.Friend="monica"}) //這是賦值一個string

注意:

1.如果右邊值是null,則左邊不會被賦值,會保留以前的值

2.velocity模板不會將reference解釋為物件的例項變數

例如: $foo.Name 將被解釋為Foo物件的getName()方法,而不是Foo物件的Name例項變數

迴圈

#foreach ($element in $list)

This is $element

$velocityCount //這個表示的數量

#end

條件語句

#if(condition)

#else if(condition)

#else

#end

語句的巢狀

#foreach($element in $list)

## 內部迴圈

#foreach ($element in $list)

$element

#end

## 外部迴圈

$element

#end

註釋

(1) 單行註釋

## 表示單行註釋

(2) 多行註釋

#* 這是多行註釋*#

(3) 文件格式註釋

#** 這是文件註釋

@version 1.1

@author minglangx

*#

關係和邏輯操作符

#if($foo && $bar)

This AND that

#end

Velocity中的巨集

Velocity中的巨集我們可以理解為函式

(1) 巨集的定義

#marcro(巨集的名稱 $引數1  $引數2....)

語句體

#end

(2) 巨集的呼叫

#巨集的名稱($引數1 $引數2...)

說明: 引數之間用空格隔開

#stop

停止執行模板引擎並返回,把它應用於debug除錯

#include與#parse

都是引入本地檔案,為了安全,被引入的本地檔案只能在TEMPLATE_ROOT目錄下。

區別:

(1) #include可以引入多個檔案,可以用逗號分隔。

#include("one.gif","two.txt","three.htm")

在括號內可以是檔名,但是更多的是使用變數

#include($test)

(2) include被引入的檔案的內容將不會通過模板引擎解析

而#parse引入的檔案內容Velocity將解析其中的velocity語法並移交給模板意思就是直接將引入檔案的內容複製到當前檔案中

例如: 當前檔案 dofoo.vm

Count down.

#set ($count=8)

## 這裡引用了一個vm檔案直接追加到當前程式碼中

#parse("parsefoo.vm")


ALL done with dofoo.vm!

那麼在parsefoo.vm模板中,你輸入一下內容

$count

#set ($count = $count -1 )

#if ($count > 0) 

#parse("parsefoo.vm")

#else


ALL done with parsefoo.vm!

#end

最後顯示結果:

Count down.

8

7

6

5

4

3

2

1

0

All done with parsefoo.vm!

All done with dofoo.vm!

10. 轉義字元 ''的使用

如果引用被定義, 兩個'\‘只會輸出一個'',如果未被定義,剛按原樣輸出. 例如:

#set($email = "foo" )

$email

\$email

\\$email

\\\$email

輸出:

foo

\$email

\foo

\$email

如果$email 未定義

$email

\$email

\\$email

\\\$email

內建物件

Velocity內建了一些物件,在vm模板裡可以直接呼叫,例如:$request、$response、$session

陣列訪問

如果需要訪問特定的元素需要傳入相應的下標