在编译期间检查属性名称的Web模板引擎

时间:2014-05-13 14:17:22

标签: java web properties template-engine

我正在寻找在运行时之前编译模板文件的Web模板引擎(任何语言,Java首选)。它应该在我的模板中检测未知的属性名称和路由。例如:

<h1>{{hello}}</h1> 
如果我渲染的模型上没有相应的字段,

应该给出编译错误

2 个答案:

答案 0 :(得分:4)

我已实施static-mustache library以提供基于胡须语法的类型安全模板引擎,就像你问题中的那样。

它在编译时检查语法错误和类型错误(如缺少属性)。它需要零构建配置,因为它是标准的注释处理器。

模板仍然是纯胡子模板,所有类型信息都是从用于渲染的普通Java类中提取的。

答案 1 :(得分:3)

我建议你看看Rythm template engine。 Rythm是Java的静态类型模板引擎。您需要使用@args指令声明所有模板参数。结果是你得到一个具有清晰界面的类型安全模板。

您可以在http://fiddle.rythmengine.org/

玩Rythm的在线互动小提琴网站

声明:我是Rythm模板引擎的作者

更新以回答@ user2043423对属性检查的担忧

所以首先将每个rythm模板编译成java类,因此它绝对是类型安全的。第二,因为它是类型安全的,它会检查Java类中是否存在属性。例如,您将rythm模板定义为:

@args Employee employee

Hello @employee.getFistName()

运行模板时会出现编译错误,因为@employee.getFistName()中存在拼写错误,一旦将其修改为@employee.getFirstName(),则会继续渲染模板

如果您想检查模板参数员工是否已传递给模板,请使用@if

@args Employee employee

@ifNot(employee) {
    @return
}

Hello @employee.getFirstName()!

有关@if指令

的更多信息,请参阅http://rythmengine.org/doc/directive.md#if