4

我有一个 header.scala.html 文件,它需要一个字符串和一个列表参数

IE @(title: String)(scripts: List[String])

其他 scala 文件将引用标头并传递特定列表,例如

@import scala._
@{val jsList = List("a", "b")}
@views.html.header("title"){jsList}

但是我得到编译错误 - 类型不匹配;找到:play.api.templates.Html 需要:java.util.List[String]

一定有一些我没有看到的语法问题......有人吗?

谢谢。

4

1 回答 1

5

您不能在 Play 模板中声明变量(像那样)。(这是关于它的谷歌小组讨论

您可以做的第一件事是,如果您在模板中只需要该值一次:

@views.html.header("title")(List("a","b"))

请注意,您应该使用(and ),我相信之间的所有内容都{}被解释为 HTML 代码(因此您的类型不匹配错误)。

但是,如果您在模板中多次需要它,这不是一个合适的方法。然后您可以使用defining块:

@defining(List("a","b")) { jsList =>

  @* using it once *@
  @views.html.header("title")(jsList)

  @* using it twice *@
  <p>My list contains @jsList.size elements.</p>

  @* ... *@
}
于 2013-06-07T13:36:30.347 回答