for循环
#foreach({$acc in $!{param.tools}})
#set($count = $count + 1 )
<li custom-data="${!acc.orgcode}" cube-data="$!{acc.owner}" node-data="${!acc.balance}">
<a href="javascirpt:void(0);">${!acc.accountName} 可用余额 ${!acc.balance}元</a>
</li>
#end
if条件语句
#if(${supportWorkerPay})
#end
form表单提交
<form autocomplete="off" id="pursePayForm" action="/purse/pursePay.htm" method="post">
<input type="hidden" name="orderId" value="$!{param.orderId}"/>
<input type="hidden" name="amount" value="$!{param.amount}"/>
<input type="hidden" name="encryptContent" value="$!{param.encryptContent}"/>
<input type="hidden" name="encryptPwd" value=""/>
<input type="hidden" name="validateCode" value=""/>
</form>
$("#pursePayForm").submit();
嵌套vm
#parse(parsefoo.vm)
velocity三种reference
- 变量:对Java对象的一种字符串化表示,返回值调用Java的toString( )方法的结果。
- 方法:调用的是对象的某个方法,该方法必须是public的,返回值也是toString( ),方法的参数也必须是String的。
- 属性:除了访问java的类属性外,等价于get…( ) 方法。
vm基本符号
- “#”:来标识 velocity 的脚本语句。
- “$”:来标识一个对象(或者变量)。
- “{}”:用来标识 velocity 变量。
- “!”:用来强制把不存在的变量显示为空白。
- 用双引号还是单引号表示,默认"",可以在stringliterals.interpolate=false改变默认处理方式。
vm基本语法
-
变量
-
变量定义
#{$name="hello"} #{$templateName="index.vm"} #template
-
变量规范
${name},也可以写成$name 但一般情况下使用${name} 注意:当引用属性的时候不能加{}
-
变量复制
$name ="hello" 左侧: 为变量或者属性的引用。 右侧: 变量引用、字面字符串、属性引用、方法引用、字面数字、数组列表。 #set($monkey = $bill) ##变量引用 #set( $monkey.Friend = "monica" ) ## 字符串引用 #set($monkey.Blame = $spindoctory.weave($web) ## 方法引用 #set($monkey.Number = 123) ## 数字引用 #set($monkey.Say = ["Not",$my,"fault"] ##数组列表 ps: 1、右值是null,则左侧不会被赋值,会保留原来的值。 2、velocity 模板中未被定义的将被认为是一个字符串。 #set($foo ="gibbous") $moon = $foo 输出结果为$moon=gibbous 3、velocity模板中不会解释为对象的实例变量。 例如 $foo.getBar() 等同于$foo.Bar; $data.getUser("jon") 等同于 $data.User("jon"); data.getRequest().getServerName()等同于$data.Request.ServerName等同于$(data.Request.ServerName)
-
-
循环
#foreach($element in $list) This is $element $velocityCount #end 例如: #set($list=["pine","oak","maple"]) #foreach($element in $list) $velocityCount This is $element.<br> #end $list 可以为Vector、Hashtable、Array。分配给$element 的值是一个java对象,并且可以通过变量被引用。 例如: #foreach($key in $list.keySet) Key: $key--->value: $list.get($key) <br> #end Velocity 还提供了循环次数的方法,$velocityCouont变量的名字是Velocity默认的名字,表示循环到第几次了。 例如: #foreach($foo in [1,2,3,4,5]) $foo #end <br> #foreach($bar in [2,1,0,-1,-2]) $bar #end <br> #set($arr=[0,1]) #foreach($i in $arr) $i #end
-
条件语句
#if(condition) #elseif(condition) #else #end 例如: #set($arr=["jiayou","jiayou2","jiayou3"]) #foreach($element in $arr ) #if($velocityCount==1) <div>jiayou</div> #elseif($velocityCount==2) <div>jiayou2</div> #else <div>jiayou3</div> #end #end
-
语句嵌套
#foreach($element in $list) #foreach($element in $list) this is $element .$velocity <br>inner<br> #end this is $element.$velocity <br>out<br> #end
-
注释
- 单行注释:##this is single
- 多行注释:#* …*#
- 文档格式:#**…#
-
关系和逻辑操作符
&& == || ! #if($foo && $bar) <strong> This AND that</strong> #end
-
velocity中的宏
Velocity中的宏我们可以理解为函数。
- 宏的定义
#macro(宏的名称 $参数1 $参数2 …)
语句体(即函数体)
#end - 宏的调用
#宏的名称($参数1 $参数2 …)
说明:参数之间用空格隔开。
- 宏的定义
-
#stop
停止执行模板引擎并返回,应用于debug很有帮助。
-
$include和#parse
#include和#parse的作用都是引入本地文件,为了安全,被进入的文件只能在Template_root目录下。
这两个引入区别:
-
#include可以引入多个文件。例如:#include(“one.gif”,“two.txt”,“three.html”)
#parse只能引入指定的单个对象。例如:#parse(“layout/index.vm”)
-
#include引入的文件内容不会被velocity模板引擎解析。
#parse引入的文件内容,将解析其中的velocity并交给模板,相当于把引入的文件内容copy到文件中。
-
#parse是可以递归调用的。
例如: 调用者 dofoo.vm中代码: count down.<br> #set($count= 8) #parse(parsefoo.vm) <br>all done with diao yong parsefoo.vm. parsefoo.vm中代码: $count $set($count = $count - 1) #if($count>0)<br> #parse("parsefoo.vm") ##自己调用自己 #else <br>递归调用结束 #end 注: 使用#parse来嵌套另一个vm页面时,变量共享问题,如: a.vm 中嵌套了b.vm a.vm中使用了变量$param; b.vm里可直接使用$param. 但其中一个定义了,则使用它自己定义的那个同名变量。
-
-
转义字符
当变量被定义的时候,两个\代表一个\,如果未被定义,则按照原样输出。