JVM*_*ATL 8 java playframework playframework-2.3
我刚刚开始使用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>
Run Code Online (Sandbox Code Playgroud)
从顶行可以看出,模板需要一个String和一个Html参数,但我无法弄清楚如何从Java调用者代码构造Html参数!
我在我的控制器类中尝试了一些变体:
return ok(test1.render("My Title","It <em>finally</em> works!"));
Run Code Online (Sandbox Code Playgroud)
显然这很失败,因为第二个参数是String而不是Html,所以我的参数不匹配.(有一个运行时错误: actual argument String cannot be converted to Html by method invocation conversion- 这是有道理的,但我希望这里有一些魔法.:))
所以我尝试从String中创建一些Html,认为这可能是包中的某个帮助类,这可能"只是工作":
return ok(test1.render("My Title",new Html("It <em>finally</em> works!")));
Run Code Online (Sandbox Code Playgroud)
这不会编译,因为javac找不到Html类.好,可以.扫描播放文档,似乎有一个play.api.templates.Html类(用Scala编写)带有一个带String的构造函数,所以我尝试完整的包限定名:
return ok(test1.render("My Title",new play.api.templates.Html("It <em>finally</em> works!")));
Run Code Online (Sandbox Code Playgroud)
这也不会编译:我在包play.api.templates中找不到'Html'的符号.
那么:什么是让我将我的String(其中包含HTML片段)转换为我可以传递到模板的HTML对象的神奇酱油?
播放模板已经被分解到Twirl模块中,如Play 2.3迁移指南中所述.
play.api.templates.Html现在play.twirl.api.Html.
| 归档时间: |
|
| 查看次数: |
5083 次 |
| 最近记录: |