我刚刚开始使用 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 对象?