8

刚刚开始使用 play 框架,我试图了解 java 应用程序代码和基于 scala 的模板框架之间的交互(注意:到目前为止,我对 Scala 一无所知,除了它是另一个在 JVM 上编译为字节码的语言,并且您的 Scala 和 Java 类可以交互)。

我有一个如下所示的 test1.scala.html 模板:

@(title: String)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
    </head>
    <body>
        @content
    </body> </html>

从第一行可以看出,模板需要一个字符串和一个 Html 参数,但我不知道如何从 Java 调用程序代码构造 Html 参数!

我在控制器类中尝试了一些变体:

return ok(test1.render("My Title","It <em>finally</em> works!"));

这显然失败了,因为第二个参数是字符串而不是 Html,所以我的参数不匹配。(有一个运行时错误: actual argument String cannot be converted to Html by method invocation conversion- 这是有道理的,但我希望这里有一些魔力。:))

所以我尝试从一个字符串创建一些 Html,认为这可能是包中某处的一个辅助类,这可能“正常工作”:

return ok(test1.render("My Title",new Html("It <em>finally</em> works!")));

这不会编译,因为 javac 找不到 Html 类。好,可以。扫描播放文档,似乎有一个 play.api.templates.Html 类(用 Scala 编写),其构造函数采用字符串,所以我尝试了完整的包限定名称:

return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));

这也不会编译:我在 play.api.templates 包中找到了一个未找到“Html”的符号。

那么:有什么神奇的方法可以让我将我的字符串(其中包含一段 HTML 代码)转换为可以传递给模板的 HTML 对象?

4

1 回答 1

8

如Play 2.3 Migration Guide中所述,Play 模板已被纳入Twirl模块。

play.api.templates.Html现在是play.twirl.api.Html

于 2014-06-20T10:41:18.603 回答