日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Velocity知识点总结

發布時間:2025/6/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Velocity知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Velocity知識點總結

?

1. 變量

?

(1)變量的定義:

?

#set($name = "hello") 說明:velocity中變量是弱類型的。

?

當使用#set 指令時,括在雙引號中的字面字符串將解析和又一次解釋,例如以下所看到的:

?

#set($directoryRoot = "www" )

?

#set($templateName = "index.vm" )

?

#set($template ="$directoryRoot/$templateName" )

?

$template

?

輸出將會是:www/index.vm

?

注:在velocity中使用$2.5這種貨幣標識是沒有問題得的,由于velocity中的變量總是以一個大寫或者小寫的字母開始的。

?

(2)變量規范的寫法

?

${name} ,也能夠寫成:$name。提倡用前面的寫法。

?

比如:你希望通過一個變量$vice來動態的組織一個字符串。

?

?Jackis a $vicemaniac.

?

本來變量是$vice如今卻變成了$vicemaniac,這樣Veloctiy就不知道您究竟要什么了。所以,

?

應該使用規范的格式書寫: Jack is a ${vice}maniac

?

如今Velocity知道變量是$vice而不是$vicemaniac。

?

注意:當引用屬性的時候不能加{}

?

(3)變量的賦值:

?

?$name="hello"

?

賦值的左邊必須是一個變量或者是屬性引用。右邊能夠是以下六種類型之中的一個:

?

變量引用,字面字符串,屬性引用,方法引用,字面數字,數組列表。

?

以下的樣例演示了上述的每種類型:

?

#set( $monkey = $bill ) ## variablereference

?

#set( $monkey.Friend = "monica" )## string

?

?#set( $monkey.Blame = $whitehouse.Leak ) ##property reference

?

#set( $monkey.Plan =$spindoctor.weave($web) ) ## method reference

?

#set( $monkey.Number = 123 ) ##number

?

#set( $monkey.Say = ["Not", $my,"fault"] ) ## ArrayList

?

注意:①假設上述樣例中的右值是null, 則左值不會被賦值,也就是說會保留曾經的值。

?

②velocity模板中未被定義的變量將被覺得是一個字符串。比如:

?

#set($foo = "gibbous")

?

$moon = $foo

?

輸出結果為:

?

$moon = gibbous

?

③velocity模板中不會將reference解釋為對象的實例變量。比如:$foo.Name將被解

?

釋為Foo對象的getName()方法。而不是Foo對象的Name實例變量。比如:

?

$foo.getBar() 等同于$foo.Bar 。

?

$data.getUser("jon") 等同于$data.User("jon");

?

data.getRequest().getServerName() 等同于

?

$data.Request.ServerName等同于${data.Request.ServerName}

?

2. 循環

?

#foreach ($element in $list)

?

This is $element.

?

??$velocityCount

?

??#end

?

樣例:

?

#set( $list = ["pine","oak", "maple"])

?

#foreach ($element in $list)

?

$velocityCount

?

This is $element.

#end

?

輸出的結果為:

?

1 This is pine.

?

2 This is oak.

?

3 This is maple.

?

每次循環$list中的一個值都會賦給$element變量。

?

$list能夠是一個Vector、Hashtable或者Array。分配給$element的值是一個java對象,而且能夠通過變量被引用。

?

比如:假設$element t是一個java的Product類,而且這個產品的名字能夠通過調用他的getName()方法得到。

?

#foreach ( $key in $list.keySet())

?

Key: $key -> Value: $list.get($key)<br>

#end

?

提示:velocity中大寫和小寫敏感。

?

Velocity還特別提供了得到循環次數的方法,$velocityCount變量的名字是Velocity默認的名字。

?

?樣例:

?

First example:

?

#foreach ( $foo in [1..5] )

?

???$foo

?

???#end

?

?

?

Second example:

?

#foreach ( $bar in [2..-2] )

?

???$bar

?

???#end

?

?

?

Third example:

?

#set ( $arr = [0..1] )

?

???#foreach ( $i in $arr )

?

???$i

?

??#end

?

上面三個樣例的輸出結果為:

?

?First example:

?

?1 23 4 5

?

Second example:

?

? 2 10 -1 -2

?

Third example:

?

?0 1

?

3. 條件語句

?

#if (condition)

?

#elseif (condition)

?

#else

?

?#end

?

4. 語句的嵌套

?

#foreach ($element in $list)

?

?##inner foreach 內循環

?

#foreach ($element in $list)

?

This is $element. $velocityCount<br>inner<br>

#end

?

?##inner foreach 內循環結束

?

?##outer foreach

?

This is $element.

?

$velocityCount <br>outer<br>

#end

?

語句中也能夠嵌套其它的語句。如#if…#else…#end等。

?

5. 凝視

?

(1)單行凝視:

?

?##This is a single line comment.

?

(2)多行凝視:

?

#*

?

?Thusbegins a multi-line comment. Online visitors won’t

?

?seethis text because the Velocity Templating Engine will

?

?ignore it.

?

?*#

(3)文檔格式:

?

#**

?

?Thisis a VTL comment block and

?

?maybe used to store such information

?

?asthe document author and versioning

?

information:

?

@version 1.1

?

@author xiao

?

*#

?

6. 關系和邏輯操作符

?

Velocity 也具有邏輯AND, OR 和 NOT 操作符。

?

?

## example for AND

?

#if($foo && $bar)<strong>Thisand that</strong>

?

#end

?

樣例中#if() 指令僅在$foo 和$bar 都為真的時候才為真。假設$foo 為假。則表達式也為假;

?

而且 $bar 將不被求值。

假設 $foo 為真,Velocity 模板引擎將繼續檢查$bar的值。假設 $bar

?

?為真,則整個表達式為真。而且輸出This AND that 。假設 $bar 為假,將沒有輸出由于整

?

個表達式為假。

?

7.Velocity 中的宏

?

Velocity中的宏我們能夠理解為函數。

?

①宏的定義

?

#macro(宏的名稱 $參數1 $參數2 …)

?

??????語句體(即函數體)

?

#end

?

②宏的調用

?

?????#宏的名稱($參數1 $參數2 …)

?

??????????????? 說明:參數之間用空格隔開。

?

8.#stop

?

?停止運行模板引擎并返回,把它應用于debug是非常有幫助的。

?

9.#include與#parse

?

#include和#parse的作用都是引入本地文件, 為了安全的原因。被引入的本地文件僅僅能在

?

TEMPLATE_ROOT文件夾下。

?

差別:

?

(1) 與#include不同的是。#parse僅僅能指定單個對象。而#include能夠有多個

?

假設您須要引入多個文件,能夠用逗號分隔即可:

?

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

?

在括號內能夠是文件名稱,可是很多其它的時候是使用變量的:

?

#include ( “greetings.txt”, $seasonalstock)

?

(2) #include被引入文件的內容將不會通過模板引擎解析;

?

?而#parse引入的文件內容Velocity將解析當中的velocity語法并移交給模板,意思就是說

?

相當與把引入的文件copy到文件里。

?

#parse是能夠遞歸調用的。比如:假設dofoo.vm包括例如以下行:

?

Count down.<br>

#set ($count = 8)

?

#parse ("parsefoo.vm")

<br>All done with dofoo.vm!

?

那么在parsefoo.vm模板中,你能夠包括例如以下VTL:

?

$count

?

#set($count = $count - 1)

?

#if ( $count > 0 )<br>

#parse( "parsefoo.vm" )

?

#else

<br>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!

?

注意:在vm中使用#parse來嵌套另外一個vm時的變量共享問題。如:

?

->a.vm 里嵌套 b.vm。

?

->a.vm 里定義了變量 $param;

?

->b.vm 里能夠直接使用$param。無不論什么限制。

?

但須要特別注意的是,假設b.vm里同一時候定義有變量$param,則b.vm里將使用b.vm里定義的值。

?

10.轉義字符'\'的使用

?

假設reference被定義,兩個’\’意味著輸出一個’\’,假設未被定義,剛按原樣輸出。

?

如:

?

#set($email = "foo" )

?

$email

?

\$emai

?

l\\$email

?

\\\$email

?

輸出:

?

foo

?

$email

?

\foo

?

\$email

?

假設$email 沒有定義

?

$email

?

\$email

?

\\$email

?

\\\$email

?

輸出:

?

$email

?

\$email

?

\\$email

?

\\$email

?

?

?

11.內置對象

?

Velocity內置了一些對象,在vm模版里能夠直接調用,列舉例如以下:

?

$request、$response、$session。另外,模板內還能夠使用$msg內的消息工具訪問 Struts 的國際化資源,達到簡便實現國際化的方法。

?

12. 數組訪問

?

對數組的訪問在Velocity中存在問題,由于Velocity僅僅能訪問對象的方法,而數組

?

又是一個特殊的Array。所以盡管數組能夠進行循環列舉,但卻不能定位訪問特定

?

位置的元素,如 strs[2],數組對固定位置元素的訪問調用了Array的反射方法

?

get(Object array, int index),而Velocity沒能提供這種訪問,所以數組要么改成

?

List等其它類容器的方式來包裝,要么就通過公用Util類的方式來提供。傳入數組

?

對象和要訪問的位置參數,從而達到返回所需值的目的。

總結

以上是生活随笔為你收集整理的Velocity知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。