1、新建一个java工程,将velocity的jar包添加进编译路径,包括velocity-1.7.jar和lib中的所有jar包,这里给出下载链接:http://velocity.apache.org/download.cgi。
2、给出模板文件:example.vm.
<?xml version="1.0" encoding="UTF-8"?>
<list>
#foreach( $name in $list )
$name is fun!
#end
</list>
3、给出我的测试类,将模板文件和类文件放在一个目录下。
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
public class HelloVeloctiy {
public HelloVeloctiy(String templateFile) {
try {
Velocity.init();
/*
* Make a context object and populate with the data. This is where
* the Velocity engine gets the data to resolve the references (ex.
* $list) in the template
*/
VelocityContext context = new VelocityContext();
context.put("list", getNames());
/*
* get the Template object. This is the parsed version of your
* template input file. Note that getTemplate() can throw
* ResourceNotFoundException : if it doesn't find the template
* ParseErrorException : if there is something wrong with the VTL
* Exception : if something else goes wrong (this is generally
* indicative of as serious problem...)
*/
Template template = null;
try {
template = Velocity.getTemplate(templateFile);
} catch (ResourceNotFoundException rnfe) {
System.out.println("Example : error : cannot find template "
+ templateFile);
} catch (ParseErrorException pee) {
System.out.println("Example : Syntax error in template "
+ templateFile + ":" + pee);
}
/*
* Now have the template engine process your template using the data
* placed into the context. Think of it as a 'merge' of the template
* and the data to produce the output stream.
*/
BufferedWriter writer = writer = new BufferedWriter(
new OutputStreamWriter(System.out));
if (template != null)
template.merge(context, writer);
/*
* flush and cleanup
*/
writer.flush();
writer.close();
} catch (Exception e) {
System.out.println(e);
}
}
public ArrayList getNames()
{
ArrayList list = new ArrayList();
list.add("HelloVelocity 1");
list.add("HelloVelocity 2");
list.add("HelloVelocity 3");
list.add("HelloVelocity 4");
return list;
}
public static void main(String[] args)
{
HelloVeloctiy t = new HelloVeloctiy("example.vm");
}
}
4、编译执行,看看输出是不是很简单:
<?xml version="1.0" encoding="UTF-8"?>
<list>
HelloVelocity 1 is fun!
HelloVelocity 2 is fun!
HelloVelocity 3 is fun!
HelloVelocity 4 is fun!
</list>
5、关于VTL更多的信息,可以查阅相关资料。