播放2.5 - 在数据库中存储模板

时间:2016-07-28 11:07:35

标签: java html templates playframework

我正在使用Play 2.5,并且需要将所有相关的静态HTML模板数据存储在数据库中的一列中,然后我们可以调用这些数据并将相关对象传递到其中。

这很难证明Play似乎要求模板在运行之前作为类路径中包含的静态文件存在。

例如,假设我有一个 index.scala.html 文件,如下所示:

<html>
Hello @name!
</html>

我想将这个模板存储在一个变量(即 String template )中,我可以像这样传递对象:

String template = GreetingDTO.getTemplate();

Content html = template.render(User.getName());

这基本上就我在这一点上进行模板操作而言。我需要将一些传入的对象格式化为用户可编辑的电子邮件通知HTML布局。

这是不是可以不使用Play的类路径结构?我甚至从哪里开始呢?我可以通过使用与Twirl不同的模板引擎来实现这一点。我发现的唯一例子是几年前this旧的Freemarker帖子,所以希望可能会有一些更新的东西。

1 个答案:

答案 0 :(得分:0)

您将无法使用默认模板引擎Twirl,因为它被编译为scala代码,然后编译为字节码,并且所有这些都在编译/构建时发生。来自the docs

  

模板按照简单的命名约定编译为标准Scala函数。如果您创建了views/Application/index.scala.html模板文件,则会生成一个views.html.Application.index类,其中包含apply()方法。

当然,change the template engine可以使用另一个更符合您要求的模板引擎(动态加载和解析模板)。最后,看看modules directory