我正在寻找一个Java模板引擎,它禁止在模板中执行代码,只允许标记。
在一个完美的世界里,我会寻找相当于Jinja2(或Django template engine)的等价物。 基于Django,模板标签将在我创建时使用,但用户无法创建模板标签(通过执行代码)。
我会在Play! Framework中实现它。
感谢您的帮助!
答案 0 :(得分:5)
StringTemplate正是您要找的。 p>
它的显着特点是 它strictly enforces model-view separation与其他引擎不同。 严格的分离使网站和 代码生成器更灵活 维护; 它还提供了一个 防御恶意的出色防御 模板作者
答案 1 :(得分:1)
根据您的要求,看起来您所需要的只是一个模板引擎,它不允许任何类似于JSP的scriptlet(在<%和%>之间)并且仅基于标签和/或属性。
如果是这样,我想建议您使用Thymeleaf http://www.thymeleaf.org(此处为comparison with JSP),其中我是作者。但是,如果我没有错,那么这些要求也可以通过Velocity http://velocity.apache.org来实现,所以最终可以选择!
答案 2 :(得分:1)
如果您想提供一种简单的方法来修改他们的模板,而无需了解数百个自定义标签并实现明确定义的功能,而在免费提供它的同时,您应该考虑被动模板。这确保了不会添加任何恶意代码:)在Java中使用被动模板的强引擎是Snippetory。但是,如果您想控制访问权限,访问控制也可能是一个好主意。