如何在Java中使用velocity来渲染文本

这个例子展示了如何在Java中使用Velocity生成一个页面。

创建名为example.vm的以下模板:


Hello $name!
	

代码在上下文中设置变量。 上下文被传递给模板。 然后使用上下文处理渲染。

创建以下java文件:

import static org.junit.Assert.assertEquals;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;

public class VelocitySimple {

	public static void main(String[] argv){

		// Source directory
		String sourceDirectory = "V:/tmp/velocity/";
		
		
		// Create the velocity engine
        VelocityEngine ve = new VelocityEngine();
        
        ve.setProperty( "resource.loader", "file");
        ve.setProperty( "file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
        ve.setProperty( "file.resource.loader.path", sourceDirectory);
        ve.setProperty( "file.resource.loader.cache", true);
        ve.setProperty( "file.resource.loader.modificationCheckInterval", "2");

        ve.init();		
		
        // Get the template
        Template t = ve.getTemplate( "example.vm" );

        // Create the 
        VelocityContext context = new VelocityContext();
        context.put("name", "World");

        try {
	        // Create the output file
	        Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream( new File( sourceDirectory + "example.txt" ) ), "UTF8") );
	    	
	        t.merge( context, out);
	        
	        out.close();
        } catch ( Exception e ){
        	e.printStackTrace();
        }
	}
	
}

生成的文件example.txt将是:

	
Hello World!
	

代码首先使用文件资源加载器初始化 VelocityEngine 。 它将加载器路径设置为调用模板的目录。 然后使用getTemplate方法从模板目录中获取模板。 在 VelocityContext 中设置一组变量,这里是name = World,上下文然后传递给合并方法,生成输出文件。 定义为$ name的变量在模板中被替换。


参考文献:

Velocity

最近评论