Velocity是基于Java的模板引擎,它允許頁面設計者引用Java中定義的方法。頁面設計者和Java開發者能夠同時使用MVC的模式開發網站,這樣網頁設計者能夠把精力放在頁面的設計上,程序員也可以把精力放在代碼開發上。Velocity把Java代碼從Web頁面中分離, 使網站可維護性更強,同時也在Java服務器頁面(JSPs)或者PHP中提供了可視化交互的選擇。
Velocity 可以被用在以下場景中:
velocity 中的變量是弱類型,大小寫敏感。
#set($name="velocity")
當使用 set 指令時,等號后面引號中的字面字符串將解析和重新解析,例如出現以 $ 開始的字符串時,將做變量的替換。
#set($hello="hello $name")
上面的這個等式將會給 $hello 賦值為“hello velocity”
在模板文件中使用 name 或者 {name} 來使用定義的變量。推薦使用 {name} 這種格式,因為在模板中同時可能定義了類似 name 和 names 的兩個變量,如果不選用大括號的話,引擎就沒有辦法正確識別 names 這個變量。對于一個復雜對象類型的變量,例如 person,可以使用 {person.name} 來訪問 person 的 name 屬性。值得注意的是,這里的 {person.name} 并不是直接訪問 person 的 name 屬性,而是訪問 person 的 getName() 方法,所以 {person.name} 和
對于 Velocity 來說,變量是弱數據類型的,可以在賦了一個 String 給變量之后再賦一個數字或者數組給它。
賦值的左邊必須是一個變量或者屬性引用。
賦值的右邊可以是以下6種類型之一:
#set($foo = $bar)#set($foo ="hello")#set($foo.name = $bar.name)#set($foo.name = $bar.getName($arg))#set($foo = 123)#set($foo = ["foo",$bar])
注:(1)如果上述例子中右值為 null,則左值不會被賦值,也就是說會保留以前的值。
(2)Velocity 模板中未被定義的變量將會認為是字符串。例如:
#set($foo = $bar)$foo輸出結果:$foo
#set($list=["velocity","freemarker","jsp"])#foreach($element in $list) <p>${velocityCount}. This is ${element}</p>#end輸出結果:1. This is velocity2. This is freemarker3. This is jsp
Velocity 引擎會將 list 中的值循環賦給 element 變量,同時會創建一個 $velocityCount 的變量作為計數,從 1 開始,每次循環都會加 1。
另外,Velocity 中還提供了得到循環次數的方法, $velocityCount 變量的名字是 Velocity 默認的名字。
#foreach($i in [1..3]) $i#end輸出結果:1 2 3
#if($condition > 5) <p>condition > 5</p>#elseif($condition == 5) <p>condition = 5</p>#else <p>condition < 5</p>#end輸出結果:condition = 5
Velocity 引擎提供了 AND、OR 和 NOT 操作符,分別對應 && 、|| 和 ! 。
#set($a=true)#set($b=false)#if($a && $b) This is all true.#end
Velocity 中的宏可以理解為函數定義。
(1)宏的定義:
#macro(宏的名稱 $參數1 $參數2 ...) 語句體(即函數體)#end
(2)宏的調用:
#宏的名稱($參數1 $參數2 ...)
注意:參數之間用空格隔開
(3)示例:
#macro(func $args1 $args2) This is a macro. The argument have ${args1} and ${args2}.#end#func("hello" "world")輸出結果:This is a macro. The argument have hello and world.
#parse 與 #include 指令的功能都是在外部引用文件,而兩者的區別是,#parse 會將引用的內容當成類似于源碼文件,會將內容在引入的地方進行解析,#include 是將引入文件當成資源文件,會將引入內容原封不動地以文本輸出。
示例:
foo.vm 文件:
#set($name="velocity")$name
(1)parse.vm 文件:
#parse("foo.vm")
輸出結果:
velocity
(2)include.vm 文件
#include("foo.vm")
輸出結果:
#set(name=”velocity”) name
轉載于:https://www.cnblogs.com/Jimc/p/9789655.html
159035.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
移動4g套餐哪個最劃算?8元天悅卡套餐最最合算8元天悅卡,月租8元,乾坤二卦30分鐘通話費,1元500M流量,自動續費,不用什么不花錢多。但,這個套餐好像老用戶肯定不能申請辦理。在網上有各種攻略這個可以做個參考,很多網友申請辦理成功了。我感覺這個套餐最合算,而且更適合保號,等待“攜號轉網”的用戶三大運營商4g套餐對比,哪一個更劃算?以貴州聯通為例,我公司有所推出4G全國組合套餐,里面乾坤二卦有流量...
sony電視開機就沒信號怎么辦?1.可能是電視信號源選擇錯誤造成的,用遙控器選擇對應的信號源即可;2.可能是電視與機頂盒或其他設備之間的線纜故障造成的。換條新線就行了。3.可能是外接設備沒有打開。只需檢查外接設備,開機即可;4.可能是硬件故障,建議返廠維修。sony電視開機就沒信號怎么辦?如果索尼電視沒有信號,可以通過以下步驟解決:1.檢查索尼電視的視頻線是否未連接或插錯位置。建議根據接線說明正確...
visio怎么自動復制?1、可以打開indesign其他軟件,順次排列直接點擊“插到”--“理由”--“公式編輯器6.0theorem”--“可以確定”,也可以能得到我們現在打算的公式。2、在這些你們大致講下怎莫將兩個公式和文本框放到上網通小框里有,這確實是你們偶爾會要用的流程。依次點擊“更多形狀大小”--“常見”--“小方塊”,再添加另一個虛線框到畫筆上,然后把加一個文字框,輸入輸入“emc”。...