`
huangyunzeng
  • 浏览: 29717 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

velocity1.7快速上手小例子

阅读更多

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更多的信息,可以查阅相关资料。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics