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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

velocity学习(2)

發布時間:2024/2/28 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 velocity学习(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?http://blog.csdn.net/cpf2016/article/details/45565525

(1)基本語法

? ? ? ? ? ? 1.#

? ? ? ? ? ? ? ? ? ??對于Velocity中的關鍵字,都是使用#開頭的(想象手機上的#鍵,就是為了開啟某功能)

? ? ? ? ? ? ? ? ? ? 如#set、#if、#else、#end、#foreach等

? ? ? ? ? ? ? ? ? ? 實例:

[html]?view plain?copy
  • #if($info.imgs)??
  • <img?src="$info.imgs"?border=0>??
  • #else??
  • <img?src="noPhoto.jpg">??
  • #end??
  • ? ? ? ? ? ? 2.$

    ? ? ? ? ? ? ? ? ? ??對于變量,都是使用$開頭的

    ? ? ? ? ? ? ? ? ? ? 如:$name、$msg

    ? ? ? ? ? ? 3.{}

    ? ? ? ? ? ? ? ? ? ??對于需要明確表示的Velocity變量,可以使用{}將變量包含起來

    ? ? ? ? ? ? ? ? ? ? 如在頁面中,需要有$someoneName這種內容,此時為了讓Velocity能夠區分,可以使用${someone}Name

    ? ? ? ? ? ? 4.!

    ? ? ? ? ? ? ? ? ? ??如果某個Velocity變量不存在,那么頁面中就會顯示$xxx的形式,為了避免這種形式,可以在變量名稱前加上!

    ? ? ? ? ? ? ? ? ? ? 如頁面中含有$msg,如果msg有值,將顯示msg的值;如果不存在就會顯示$msg。這是我們不希望看到的,為了把不存在的變量顯示為空白,可以使用$!msg


    (2)變量

    ? ? ? ? ? ? 1.變量定義

    ? ? ? ? ? ? ? ? ? ?#set($name = "hello")

    ? ? ? ? ? ? ? ? ? ?例子:

    [plain]?view plain?copy
  • #set($root?=?"www")??
  • #set($name?=?"index")??
  • #set($template?=?"$root/$name")??
  • $template??
  • ? ? ? ? ? ? ? ? ? 結果為www/index

    ? ? ? ? ? ?2.變量賦值

    ? ? ? ? ? ? ? ? ? ?$name = "hello"

    ? ? ? ? ? ? ? ? ? ?賦值的左邊必須是一個變量,或者是屬性的引用。右邊可以是:變量引用、字面字符串、屬性引用、方法引用、字面數字、數組

    [plain]?view plain?copy
  • #set($name?=?$bill)???##變量引用??
  • #set($name.pre?=?"monica")??##字符串??
  • #set($name.last?=?$address.num)?##屬性引用??
  • #set($name.mid?=?$hotel.find($web))?##方法引用??
  • #set($name.num?=?123)?##數字??
  • #set($name.say?=?["yes",$my,"yes"])?##數組??
  • ? ? ? ? ? ? ? ? ? 注意:velocity會將屬性解釋為屬性的get方法,如:

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

    ? ? ? ? ? ? ? ? ? $foo.User("join") ?等同于 $foo.getUser("join")

    ? ? ? ? ? ? ? ? ? $foo.Request.ServerName 等同于 $foo.getRequest().getServerName()


    (2)循環

    ? ? ? ? ?1.格式與實例

    ? ? ? ? ? ? ? ? ? ? 格式為:

    [html]?view plain?copy
  • #foreach(?單個元素名稱?in?集合)??
  • ?????????....??
  • #end??
  • ? ? ? ? ? ? ? ? ? ? 舉例

    [plain]?view plain?copy
  • #set($list?=?["yes","no","not?sure"])??
  • #foreach(?$elem?in?$list)??
  • ????$velocityCount??this?is?$elem.</br>??
  • #end??
  • ? ? ? ? ? ? ? ? ? ?結果為:

    1 this is yes.
    2 this is no.
    3 this is not sure.
    ? ? ? ? ? ? ? ? ? ? ? 注意:$velocityCount是Velocity中定義的方法,用來獲得循環次數,直接調用即可

    ? ? ? ? 2.根據次數來循環

    ? ? ? ? ? ? ? ? ? ? 直接在原來集合位置定義數字范圍即可

    ? ? ? ? ? ? ? ? ? ? 例1-正序:

    [plain]?view plain?copy
  • #foreach(?$num?in?[1..5])??
  • ????this?is?$num.</br>??
  • #end??
  • ? ? ? ? ? ? ? ? ? 結果為:

    this is 1.
    this is 2.
    this is 3.
    this is 4.
    this is 5.

    ? ? ? ? ? ? ? ? ? ? 例2-逆序:

    [plain]?view plain?copy
  • #foreach(?$num?in?[3..-2])??
  • ????this?is?$num.</br>??
  • #end??
  • ? ? ? ? ? ? ? ? ? ?結果為:

    this is 3.
    this is 2.
    this is 1.
    this is 0.
    this is -1.
    this is -2

    ? ? ? ? ?3.遍歷map

    ? ? ? ? ? ? ? ? ? ? 使用entrySet,轉化為遍歷set即可

    [plain]?view plain?copy
  • #foreach($entry?in?$myMap.entrySet())??
  • ???$entry.key?:?$entry.value??<br>??
  • #end??
  • ? ? ? ? ? ? ? ? ? ? 結果為:

    1 : abc?
    2 : bbc?
    3 : cbc?
    4 : dbc?
    5 : ebc?


    (3)條件語句

    ? ? ? ? ?1.格式

    [plain]?view plain?copy
  • #if(condition)??
  • #elseif(condition)??
  • #else??
  • #end??
  • ? ? ? ? ??注意:判空為#if($foo)

    ? ? ? ? ? 2.實例

    [html]?view plain?copy
  • #if($age>=18)??
  • ????$age??
  • #else??
  • ????your?age?is?below?18!??
  • #end??

  • (4)關系和邏輯操作符

    ? ? ? ? ?1.&&

    [html]?view plain?copy
  • #if($foo?&&?$bar)??
  • ????this?is?and??
  • #end??
  • ? ? ? ? ? ? ?只有當$foo和$bar全都不為空的時候才會執行

    ? ? ? ? ?2.||

    [plain]?view plain?copy
  • #if($foo?||?$bar)??
  • ????this?is?or<br>??
  • #else??
  • ????is?null??
  • #end??
  • ? ? ? ? ? ?只要有一個不為空,就會執行

    ? ? ? ? ?3.!

    ? ? ? ? ? 和java相同,取反


    (5)宏

    ? ? ? ? ?1.定義

    [html]?view plain?copy
  • #macro(宏的名稱??$參數1??$參數2?.....)??
  • ???????語句體(即函數體)??
  • #end??

  • ? ? ? ? ?2.調用

    [html]?view plain?copy
  • #宏的名稱?($參數1??$參數2?.....)??
  • ? ? ? ? ? ? ? ? ? ?說明:參數之間用空格隔開

    ? ? ? ? ?3.實例

    [html]?view plain?copy
  • #macro?(tablerows?$color?$list)??
  • #foreach($i?in?$list)??
  • <tr><td?bgcolor="$color">$i<td/><tr/>??
  • #end??
  • #end??
  • ? ? ? ? ?調用:

    [html]?view plain?copy
  • #set($contents?=?["zero","one","two","three"])??
  • #set($color?=?"red")??
  • <table>??
  • ????#tablerows($color,$contents)??
  • <table/>??

  • (6)調用實例方法

    ? ? ? ? ?1.定義

    ? ? ? ? ? ? ? ?如果context中存儲的是類實例,那么就可以調用類方法

    ? ? ? ? ?2.實例

    ? ? ? ? ? ? ? 方法 定義:

    [java]?view plain?copy
  • public?class?Book?{????
  • ????????
  • ????????..??
  • ????public?String?show()?{??
  • ????????return?"show";??
  • ????}??
  • }????
  • ? ? ? ? ? ? 賦值:

    [java]?view plain?copy
  • context.put("book",?new?Book());??
  • ? ? ? ? ? ? ? ?vm中:

    [html]?view plain?copy
  • $book.show()??

  • (7)轉義字符'\'

    ? ? ? ? ?如果reference,2個'\'意味著輸出一個'\'

    [plain]?view plain?copy
  • #set($mail?=?"foo")??
  • $mail??
  • \$mail??
  • \\$mail??
  • \\\$mail??
  • ? ? ? ? ?結果為:

    foo $mail \foo \$mail

    (8)內置對象

    ? ? ? ? ?Velocity內置了一些對象,在vm中可以直接調用,如:$request,$response,$session


    (9)注釋

    ? ? ? ? ?1.單行注釋##

    [plain]?view plain?copy
  • ##this?a?single?line?comment??
  • ? ? ? ? ?2.多行注釋#* ?*#

    [plain]?view plain?copy
  • #*??
  • ????this?is?a?muti-line?comment??
  • ????see?this?example??
  • *#??


  • 總結

    以上是生活随笔為你收集整理的velocity学习(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

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