我刚刚开始使用 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 参数!
我在我的 Controller 类中尝试了一些变体:
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 文档,似乎有一个 play.api.templates.Html 类(用 Scala 编写)和一个采用字符串的构造函数,所以我尝试了完整的包限定名称:
return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));
这也不会编译:我在 play.api.templates 包中得到一个 Symbol not found for 'Html'。
那么:有什么神奇的方法可以让我将我的字符串(其中包含一段 HTML)转换为可以传递到模板中的 HTML 对象?
最佳答案
Play 模板已被分解到 Twirl 中模块,如 Play 2.3 Migration Guide 中所述.
play.api.templates.Html
现在是 play.twirl.api.Html
。
关于java - 如何在 play (2.3) 框架内从 Java Controller 代码中的 String 变量构造 Html 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24317346/