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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java velocity 语法_Velocity 语法

發布時間:2023/12/10 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java velocity 语法_Velocity 语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Velocity Notes

變量名$name

為空時打印變量本身。

$!name

為空時打印空字符串(不打印任何內容)。

${name}

類似?$name,為空時原樣打印。但可以將變量和連續的字符串分隔,例如:${name}space。

$!{name}

類似?$!name,為空時打印空字符串,但可以將變量和連續的字符串分隔。例如:?$!{name}space。$name$!name${name}$!{name}

為空時打印:"$name""""${name}"""

帶花括號的屬性/方法調用方式,屬性/方法需要在花括號之內:${cookie.name}${request.getCookies()}

#set()??中,賦值符號左邊的變量名不能加感嘆號。#set($idx?=?0)#foreach($!item?in?$!list)????#set($idx?=?$!idx?+?1)#end

注:jQuery 的?$.ajax()?之類的代碼會導致 Velocity 解析異常,好在 Javascript 語法的靈活性,可以增加無效空白?$ .ajax(),當然也可以使用?jQuery.ajax()

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

注:?如果右側的值為 null,則賦值失敗,左側變量仍保持原值。

#if()#if(true)????TRUE.#elseif(false)????FALSE.#end

其實不僅僅是變量名可以使用花括號,保留字同樣可以使用,這在內聯 Velocity 腳本的時候 非常有用。 例如:

#foreach()#foreach($item?in?$list)????${velocityCount}.?$item.#end

#break

可用于中斷?#foreach()?循環。

#parse()

例如:a.vm 中包含如下代碼#parse("b.vm")

則在解析 a.vm 頁面的這行代碼時,先將 b.vm 插入到其所在的位置,并解析執行, 而且 b.vm 可以共享 a.vm 中的變量。

如果 a.vm?#parse("b.vm"),b.vm 可以直接使用 a.vm 中定義的變量。 注意:如果 b.vm 定義了同名變量,則 b.vm 中使用自身的定義。

#evaluate()

動態執行一串字符串的值:#evaluate('string?with?VTL?#if(true)will?be?displayed#end')

#include()

將文件原文包含進當前文檔中。#include("a.vm"?"readme.txt")

#define()

類似于 C 語言的?#define?命令。#define($hello)????????Hello?${who}!????#end????#set($who?=?"World")????$hello

##?顯示?"Hello?World!"

數組 & 訪問

Velocity 訪問數組對象,無法通過類似 arr[2] 來訪問特定位置的元素。#set($arr?=?[0,?1,?2,?3])$arr.get(2)

注:Velocity 中的數組對應 Java 中的 List 對象。對于 Java 原生 Array 對象, 只能夠?#foreach?進行遍歷,無法使用?$arr[0]?和?$arr.get(0)?方法。

范圍(range)#foreach($item?in?[10..20])????$item#end

對象 & 訪問#set($obj?=?{"key":"value",?"name":"space"})$obj.get("key")#foreach(#item?in?$obj)????$item#end

上面的 $item 取到的是 values,如果需要在遍歷對象過程中,同時取到對象的 keys, 可以使用?entrySet()?或?keySet()?方法。#foreach($item?in?$!obj.entrySet())????$!item.key?:?$!item.value#end#foreach($item?in?$obj.keySet())????$item?:?$obj.get($item)#end

注:?這種集合的遍歷是無序的,即遍歷順序可能不同于 $obj 中元素的定義順序 (據目前所知,是根據鍵的字母排序的)。

另外有兩種不完美解決方法:I:#set($obj?=?[????{"key":"key",?"value":"value"},????{"key":"name",?"value":"space"}????])#foreach($item?in?$obj)????$item.key?:?$item.value#end

II:#set($obj?=?[????["key","value"],????["name","space"]????])#foreach($item?in?$obj)????$item.get(0)?:?$item.get(1)#end

之所以說?不完美?是因為:對于已知的 key,本可以直接$obj.get("key")

現在只能遍歷并進行比較取得,而且較早的 Velocity 版本無法使用?#break, 以便在找到匹配項之后立即退出循環。#foreach($item?in?$obj)????#if("key"?==?$!obj.get(0))????????#set($myKey?=?$!type.get(1))????????##break????#end#end

#macros()#macro(macroName)????#subMacro("name",?"value")#end#macro(subMacro?$param1?$param2)????this?is?sub?macro($param1,?$param2).#end

注意:如果 a.vm 和 b.vm 都在頁面級存在同名,參數數量相同的宏,則后訪問的頁面 的宏不被加載。

參考:

#stop

停止模板引擎,在 Debug 時比較有用。

條件比較

在 Velocity 中可以使用大于(>)/小于(1)?要修改為?if($num > 1)?或?if(${num}>1)。

轉義$\name

$\{name}

不解析執行的內容#[[????這段內容將不被?Velocity?引擎解析,原文打出。????*?#define()????*?${blah]]#

內置對象

$request,?$response,?$session#foreach($cookie?in?$request.getCookies())????$cookie.name?:?$cookie.value#end

獲得 URL 中的參數:#set($n?=?$!request.getParameter('n'))

另外還可以使用?$msg?內的消息工具訪問 Struts 的國際化資源。

參考:

注釋##?單行注釋。#*?*?多行注釋。?*##**?*?文檔風格的注釋。?*?@version?2010/12/27?*#

據說 vm 頁面的末尾寫注釋,會導致解析異常 (SofaMVC )。

Tips

Velocity 在表單中添加 name="action" 的文本/隱藏域,可以調用對應 Java 類 (submit 按鈕的 name 則指定對應的方法名稱,如 event_submit_do_save ), 但是此時 IE 瀏覽器通過 js 獲得 form 元素本身的 action 屬性值的方式, 和其他瀏覽器稍有不同。

例如對于如下 HTML DOM 結構:

????

IE 中需要使用form.attributes["action"].value

非 IE 瀏覽器還可以使用:form.getAttribute("action")

以下是些詳細的對照://?codes????????????????????????????//??IE??????????!IEform.action.value???????????????????//?elem?????????elemform.getAttribute("action")?????????//?[object]?????attrform.getAttribute("action").value???//?elem?????????undefinedform.attributes["action"].value?????//?attr?????????attr

Form 本身的 action 屬性和 action 隱藏域在提交時,瀏覽器本身不受影響, action 隱藏域被當作正常的參數附在 Form 的 action 屬性值所對應 URL 之后。

延伸閱讀

總結

以上是生活随笔為你收集整理的java velocity 语法_Velocity 语法的全部內容,希望文章能夠幫你解決所遇到的問題。

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