6

我需要使用最新的Play Framework 2.1.1消息、变量、简单的 for 循环等在 Scala 模板中打印一些原始 HTML。一切正常。但是如果我需要做一些逻辑并将原始 HTML 打印到模板中怎么办?

@{
    val courts = venue.getCourts()
    val totalWidth : Int = 920
    .. some other initialization variables/values

    var output : String = ""
    for(court <- courts) {
        output += "<p>SomeComplexString</p>"
    }

    output
}

在这种情况下,@{}函数返回output,但 HTML 被转义,而且它也不那么实用(output在返回之前将所有内容组合成单个变量)。

如果我把类似的东西

for(court <- courts) {
    println("<p>SomeComplexString</p>")
}

它不起作用(我没有收到任何编译错误,但输出没有任何内容)。

我可以

@for(court <- courts) {
    <p>SomeComplexString</p>
}

但随后courts将超出范围(假设我不能courts在一开始就定义为模板变量)。

解决办法是什么?

4

1 回答 1

15

但是如果我需要做一些逻辑并将原始 HTML 打印到模板中怎么办?

Play Framework 与其他 MVC 框架一样,建议严格分离关注点。您的逻辑必须在您的控制器中,而不是在视图中。这就是为什么在 scala 模板中执行此操作相对复杂的原因。

此外,您可以使用@Html()来显示未转义的变量。

于 2013-04-18T20:50:53.690 回答