为什么速度模板需要名称?

时间:2014-11-24 18:13:35

标签: java velocity

我正在重构一些使用许多原始StringBuilder.append操作生成一些HTML的Java代码。为了更具表现力和更易于阅读/维护,我想使用像Apache Velocity这样的简单模板系统。在下面的代码片段中,MyClass接受一个字符串,该字符串保存模板的内容(从文件加载),并实例化相应的org.apache.velocity.Template对象。现在,我知道在许多应用程序中可能有多个模板,并且可以通过名称查找它们很方便,但在我的应用程序中只有一个,我永远不需要查找它,因为我有一个参考它。我的问题是:

  1. 为什么在解析时需要为每个模板定义一个名称? (例如,为了满足org.apache.velocity.runtime.RuntimeServices.parse
  2. 的签名
  3. 我在这里错过了什么/做了可怕的错误吗?

    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;
        }
    }
    

0 个答案:

没有答案