在 Play 框架 2.0 模板中使用选项帮助程序



我正在尝试使用views.html.helper.select(文档在这里)。我不懂scala,所以我正在使用java。我需要将 Seq[(字符串)(字符串)] 类型的对象传递给模板,对吗?像这样:

@(fooForm:Form[Foo])(optionValues:Seq[(String)(String)])
@import helper._
@form(routes.foo){
  @select(field=myForm("selectField"),options=optionValues)
}

我不知道如何在java中创建Seq[(String)(String)]。我需要用枚举类中的对(id,title)填充这个集合。

有人可以向我展示一些如何使用选择助手的扩展吗?

我在用户组上找到了这个线程,但凯文的回答对我没有多大帮助。

正确的类型是:Seq[(String, String)] 。它表示字符串对的序列。在 Scala 中,有一种方法可以使用箭头定义对:a->b == (a, b) 。所以你可以写例如:

@select(field = myForm("selectField"), options = Seq("foo"->"Foo", "bar"->"Bar"))

但是还有另一个帮助程序,如文档中所示,用于构建选择选项的序列:options ,因此您可以将上面的代码重写为:

@select(myForm("selectField"), options("foo"->"Foo", "bar"->"Bar"))

如果您的选项值与其标签相同,您甚至可以将代码缩短为:

@select(myForm("selectField"), options(List("Foo", "Bar")))

(注意:在Play 2.0.4中options(List("Foo", "Bar"))不编译,所以你可以试试这个options(Seq("Foo", "Bar"))

要从 Java 代码中填充选项,更方便的方法是使用重载的 options 函数将java.util.List<String>作为参数(在这种情况下,选项值将与其标签相同)或重载函数采用java.util.Map<String, String>

最新更新