可以看得模版中的变量定义为# set开头的语句,不是很难理解,执行后模版中的变量$iAmVariable都转换成定义的值:
good!
再来看看简单的选择,把模版hellovelocity.vm中的内容改为:
#set ($admin = "admin")
#set ($user = "user")
#if ($admin = = $user)
Welcome admin!
#else
Welcome user!
#end
执行运行命令,结果:
Welcome user!
可以看到判断语句只是简单的#if ()、#else、#end,不是很复杂。
接着继续来看看迭代数据吧,把模版hellovelocity.vm中的内容改为:
#foreach( $product in $list )
$product
#end
执行运行命令,结果:
# 1
# 2
把在例子中预先保存在VelocityContext的List中的值列举了出来,是不是很方便啊?仅仅只是用了#foreach($variable in xx) 而已,如果上面的List换成Hashtable,则可以用下面的语法:
#foreach($key in $hashVariable.keySet() )
$key ‘s value: $ hashVariable.get($key)
#end
一点不觉得这些脚本很复杂。
还有不少人还会问,如果是javabean怎么办?好的,我们增加一个bean:
package com.javayou.velocity;
/**
* @author Liang.xf 2004-12-14
*/
public class Student {
//注意class的属性是public的
public String no = "";
public String address = "";
public Student(String _no, String _address) {
no = _no;
address = _address;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
}
这个Student是实足的javabean,或者说是data bean,常见的用来装载数据的类,然后我们修改HelloVelocity.java,把:
temp.add("1");
temp.add("2");
替换成:
temp.add(new Student("123", "Guangzhou"));
temp.add(new Student("456", "Zhuhai"));
再把hellovelocity.vm的内容改为:
#foreach ($s in $students)
Address: $s.address
#end
重新编译和执行运行命令,结果如下:
<1> Address: Guangzhou
<2> Address: Zhuhai
这样把list中Student的数据打印了出来,大功告成!这里用了Velocity的内建变量$velocityCount,指的是默认的列举序号,从1开始,也可以改成0开始,但需要在Velocity.properties中更改,Velocity.properties位于velocity-1.4.jar包内的目录org\\apache\\velocity \\runtime\\defaults 下。
本文来源:CSDN博客