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

标签 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>

从第一行可以看出,模板需要一个字符串和一个 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/

相关文章:

java - 首次尝试使用链接参数失败的 Facebook 发布

java - 记录 Jersey 的 JSON 请求和响应

java - 如何在 Play 中组织 java 和 scala 代码?

scala - 从 Play WS 获取 ahcResponse

java - 如何将参数传递给maven?

java - 只有在我的@Test 通过时才运行@AfterMethod,如果@Test 失败则不运行

java - 隐式 QueryStringBindable java.util.List[models.InputTimeSheetDataStore]

java - Play Framework 2 : Read the application version defined in Build. scala

javascript - 如何在 play-framework 2.5.x 中实现跨源资源共享 (CORS)

mongodb - 玩 2.3.5 和 ReactiveMongo : MongoError ['No primary node is available!' ]