在一个应用程序中,我们使用 Velocity 来合并模板中的占位符。所以 ${firstname} 被合并到用户的名字,因为我们在合并到 VelocityContext Hashmap 之前添加了它。
代码:
public static String evaluateTemplate(final VelocityContext context, final String template){
try {
velocityEngine.init();
StringWriter writer = new StringWriter();
velocityEngine.evaluate(context, writer, "", template);
return writer.toString();
} catch (Exception e) {
...
}
}
这是一个非常简单的示例,并且总是将名字添加到 VelocityContext 中,即使它没有在模板中使用,也不是一项昂贵的操作,因为用户属性字段(来自 Hibernate 实体的 getter)大部分时间都需要评估模板(模板可以是个人页面或电子邮件)。但在某些特殊情况下,我们需要一些更“昂贵”的数据。例如,来自其他应用程序的数据通过 Web 服务获取。即使模板中没有请求信息的占位符,它也会每次加载并放入上下文哈希映射中。
所以我的问题是,是否有替代模板引擎(我也知道'Freemarker'和'String template')在必要时加载所需内容?某种开销较小的延迟加载模板引擎