源文件
package nc.jonathan.velocity;
import java.io.BufferedWriter; import java.io.FileWriter; import java.util.Properties;
import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; import org.apache.velocity.exception.MethodInvocationException; import org.apache.velocity.exception.ParseErrorException; import org.apache.velocity.exception.ResourceNotFoundException;
/** *<p> 第三个velocity学习类 </p> * *<p> 采用自定义初始化设置,解析指定位置模版, 输出到文件</p> * * Create on 2006-4-3 11:04:52 * * @author Jonathan Q. Bo * @version 1.0 valocity study */
public class ThirdExample { public static void main(String[] args){ try { /* 初始化运行时引擎, 指定模版文件夹位置进行初始化 */ Properties p = new Properties(); p.setProperty("file.resource.loader.path", "vm"); Velocity.init(p); /* 建立context, 并放入数据*/ VelocityContext context = new VelocityContext(); context.put("project","jonathan's velocity"); context.put("name","first example"); /* 解析后数据的输出目标,java.io.Writer的子类 */ FileWriter w = new FileWriter("gen/ThirdExampleGen2.java"); BufferedWriter bw = new BufferedWriter(w); /* 进行解析 */ //Velocity.mergeTemplate("secondtemplate.vm",context,w); Velocity.mergeTemplate("thirdtemplate.vm","gb2312",context,bw); bw.flush(); bw.close(); System.out.println("## ... successful!"); } catch (ResourceNotFoundException e1) { System.out.println("## 源文件不存在!"); e1.printStackTrace(); } catch (ParseErrorException e2) { System.out.println("## 解析文件错误!"); e2.printStackTrace(); } catch (MethodInvocationException e3) { System.out.println("## 方法调用异常!"); e3.printStackTrace(); } catch (Exception e4){ System.out.println("## 其他错误!"); e4.printStackTrace(); } } }
模板文件
We are using template.vm to generate $project $name
输出文件
We are using template.vm to generate jonathan's velocity first example