有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Play 2.5在数据库中存储模板

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

事实证明,这很困难,因为Play似乎要求模板在运行之前作为静态文件存在于类路径中

例如,假设我有一个索引。斯卡拉。html文件,如下所示:

<html>
Hello @name!
</html>

我想将这个模板存储在一个变量中(即字符串模板),我可以将对象传递到这样的变量中:

String template = GreetingDTO.getTemplate();

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

这基本上就是我现在要做的关于模板制作的所有事情。我需要将一些传入的对象格式化为用户可编辑的HTML布局,以便发送电子邮件通知

这是否可能在不破坏Play的类路径结构的情况下实现?我从哪里开始呢?通过使用不同于Twirl的模板引擎,我能更容易地实现这一点吗。我发现的唯一一个例子是几年前的this旧的Freemarker帖子,所以我希望可能会有更流行的东西


共 (1) 个答案

  1. # 1 楼答案

    您将无法使用默认模板引擎Twirl,因为它被编译成scala代码,然后再编译成字节码,而这一切都发生在编译/构建时。从the docs

    Templates are compiled as standard Scala functions, following a simple naming convention. If you create a views/Application/index.scala.html template file, it will generate a views.html.Application.index class that has an apply() method.

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