我正在重构一些使用许多原始StringBuilder.append
操作生成一些HTML的Java代码。为了更具表现力和更易于阅读/维护,我想使用像Apache Velocity这样的简单模板系统。在下面的代码片段中,MyClass
接受一个字符串,该字符串保存模板的内容(从文件加载),并实例化相应的org.apache.velocity.Template
对象。现在,我知道在许多应用程序中可能有多个模板,并且可以通过名称查找它们很方便,但在我的应用程序中只有一个,我永远不需要查找它,因为我有一个参考它。我的问题是:
org.apache.velocity.runtime.RuntimeServices.parse
)我在这里错过了什么/做了可怕的错误吗?
public class MyClass {
private static final String TEMPLATE_NAME = "dummy name";
private Template template;
public MyClass(String templateString) throws ParseException {
Velocity.init();
loadTemplate(templateString);
}
private void loadTemplate(String templateString) throws ParseException {
RuntimeServices runtimeServices = RuntimeSingleton.getRuntimeServices();
SimpleNode templateContent = runtimeServices.parse(templateString, TEMPLATE_NAME);
template = createTemplate(runtimeServices, templateContent);
}
private Template createTemplate(RuntimeServices runtimeServices, SimpleNode templateContent) {
Template template = new Template();
template.setRuntimeServices(runtimeServices);
template.setData(templateContent);
template.initDocument();
return template;
}
}