Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。
现在我们就来看这个小例子:
1. 建立一个Velocity模板,以vm结尾,例子中模板文件为TaxReportXml.vm,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<html>
<head></head>
<body>
HELLO! $name,Welcome to velocity!
</body>
</html>
$name 为需要程序传入的参数。
2. 以下为 velocityTest的代码:
package velocity;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.MessageFormat;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.joda.time.DateTime;
public class VelocityTest {
/**
* @param args
*/
public static void main(String[] args) {
//得到VelocityEngine
VelocityEngine ve = new VelocityEngine();
//得到模板文件
Template template = ve.getTemplate("/src/velocity/TaxReportXml.vm", "UTF-8");
VelocityContext context = new VelocityContext();
//传入参数
context.put("name", "jacky");
try {
//生成xml
FileWriter fileWriter = getFileWriter("velocity_test.xml");
//调用merge方法传入context
template.merge(context, fileWriter);
fileWriter.flush();
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private static FileWriter getFileWriter(String fileName) throws IOException {
String fullPath = MessageFormat.format("{1}{0}{2}",
File.separator,
"d://",
fileName);
System.out.println("fileName = " + fullPath);
File outputFile = new File(fullPath);
return new FileWriter(outputFile);
}
}
看一下运行结果,在d:下的velocity_test.xml中:
<?xml version="1.0" encoding="utf-8"?>
<html>
<head></head>
<body>
HELLO! jacky,Welcome to velocity!
</body>
</html>
参数已经传到xml里了,很简单吧