I am just开始使用 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>
正如您从第一行看到的,模板需要一个 String 和一个 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 编写),其构造函数采用 String,因此我尝试了完整的包限定名称:
return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));
这也不会编译:我在包 play.api.templates 中找不到“Html”的符号。
那么:有什么神奇的方法可以让我将 String(包含 HTML 片段)转换为可以传递到模板中的 HTML 对象呢?