我正在尝试使用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>
。