什么是 Velocity?
Velocity是基于Java的模板引擎,它允许页面设计者引用Java中定义的方法。页面设计者和Java开发者能够同时使用MVC的模式开发网站,这样网页设计者能够把精力放在页面的设计上,程序员也可以把精力放在代码开发上。Velocity把Java代码从Web页面中分离, 使网站可维护性更强,同时也在Java服务器页面(JSPs)或者PHP中提供了可视化交互的选择。
单行: ## 句子 多行: #* 句子句子 *# 文档格式: #** 句子句子 **#
赋值和读取: //赋值 #set($name = “hello”) //读取 ${name} ,也可以写成:$name。 注意: VM会保留你所留下的空格,所以如拼字符串时 都是鼓励用{}。 eg: #if($a==1)true enough#elseno way!#end // 这时候会报错 因为没有#elseno这个的语法 #if($a==1)true enough#else no way!#end //这个时候no way前面会有空格 #if($a==1)true enough#{else}no way!#end // 正确示范
eg: #set( $monkey = "monica" ) #set( $monkey = $monkey_a ) $monkey 结果输出:monica 因为右边的$monkey_a并没有定义过
*2.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}
A $monkey <div class="list"> <div class="item"> <div class="inner-title”> #set( $monkey = “jerry" ) <span class="color_bg point"></span>保障额度高 B $monkey </div> <div class="inner-list"> <p>年度基础免赔额:<span class="color bold">1万元</span> </p> </div> C $monkey </div> <div class="item"> D $monkey <div class="inner-title"> <span class="color_bg point"></span>住院医疗金 </div> <div class="inner-list"> <p>重症监护费用:不设单项最高年限额</p> </div> </div> E $monkey </div> 以上ABCDE的输出结果是 输出结果: 除了A是字符串显示$monkey , 其余的都是:jerry
#foreach ($item in $list) $foreach.index //自带方法 : 计数从0开始 相当于index $foreach.hasNext //自带方法 : 等于false代表是最后一个 $foreach.count //自带方法 : 计数 从1开始 相对于$velocityCount $foreach.first //自带方法 : 是否是第一个 $foreach.last //自带方法 : 是否是最后一个 #if( $foreach.count > 3 ) #break //使用 #break指令在任何时候停止循环 #end $velocityCount //计数 从1开始 This is $item</br> #end 输出: 1 this is a //$velocityCount 计数 ------------------------------- 例如数据格式 $datas的值: { {“key123":{"bonus":”1”,"name”:"aa"}}, {"key124”:{"bonus”:"2","name”:”bb"}} } $yanShi的值: { {“key123":{"title":"特殊门诊医疗金","values":[600000,600000,600000]}}, {"key124”:{"title”:”住院医疗金","values”:[100000,200000,600000]}} } 方法一: #foreach ( $key in $datas.keySet()) Key: $key -> Value: $datas.get($key) #end 输出:Key:key123 -> Value: {"bonus":”1”,"name”:"aa”} 方法二: #foreach ( $key in $bonus_datas.entrySet()) Key: $key.getKey() -> Value: $key.getValue() $yanShi.getJSONObject($key.getKey()).get(“title”) //例如循环datas里面再对应去读yanShi的title #end 输出:Key:key123 -> Value: {"bonus":"1","name":"aa"} 再补充一些读取不同数据的方法: .get() .getString() .getJSONArray() .getJSONObject() .getBooleanValue()
#if (condition) #elseif (condition) #else #end
not && || #if ( ! $foo)#end #if ($foo && $foo)#end #if ($foo1 || $foo2)#end
数组的常用方法操作:
$myarray.isEmpty()数组是否为空 $myarray.size()获取数组元素个数 $myarray.get(2)获取数组指定下标的元素 $myarray.add()增加元素
来源参考:
中文: http://ifeve.com/apache-veloc...
英文: http://velocity.apache.org/en...
参考: http://www.blogjava.net/alexw...