package com.bcgogo.product.model;
import org.apache.velocity.*;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.resource.loader.StringResourceLoader;
import org.apache.velocity.runtime.resource.util.StringResourceRepository;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Properties;
/**
* Created by IntelliJ IDEA.
* User: WWW
* Date: 12-9-3
* Time: 上午9:58
* To change this template use File | Settings | File Templates.
*/
public class Example {
public Example() {
try {
/*
* setup
*/
Properties p = new Properties();
p.setProperty("runtime.log", "velocity.log");
p.setProperty(VelocityEngine.RESOURCE_LOADER, "string");
p.setProperty("string.resource.loader.class", "org.apache.velocity.runtime.resource.loader.StringResourceLoader");
Velocity.init(p);
/*
* 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());
StringResourceRepository repo = StringResourceLoader.getRepository();
String myTemplateName = "goodsStoragePrint";
String myTemplate = "#set( $this = \"Velocity\")" +
"$this is great!" +
"#foreach( $name in $list )" +
" $name is great!" +
"#end" +
"#set( $condition = true)" +
"#if ($condition)" +
" The condition is true!" +
"#else" +
" The condition is false!" +
"#end";
//模板资源存放 资源库 中
/**\
* myTemplateName资源名称
* myTemplate 资源内容
*/
repo.putStringResource(myTemplateName, myTemplate);
/*
* 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(myTemplateName);
} catch (ResourceNotFoundException rnfe) {
System.out.println("Example : error : cannot find template " );
} catch (ParseErrorException pee) {
System.out.println("Example : Syntax error in template " + ":" + 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 = 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("ArrayList element 1");
list.add("ArrayList element 2");
list.add("ArrayList element 3");
list.add("ArrayList element 4");
return list;
}
public static void main(String[] args) {
Example t = new Example();
}
}
Velocity模版引擎的小例子(so easy)
最新推荐文章于 2024-07-18 12:50:24 发布