繁体   English   中英

如何在play(2.3)框架内的Java控制器代码中从String变量构造Html对象

[英]How do I construct an Html object from a String variable in Java controller code within the play (2.3) framework

刚刚开始使用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!"));

显然这很失败,因为第二个参数是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!")));

这不会编译,因为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对象的神奇酱油?

播放模板已经被分解到Twirl模块中,如Play 2.3迁移指南中所述

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM