我正在尝试使用views.html.helper.select
(文档here)。我不知道scala,所以我正在使用java。我需要将Seq [(String)(String)]类型的对象传递给模板吗?类似的东西:
@(fooForm:Form[Foo])(optionValues:Seq[(String)(String)])
@import helper._
@form(routes.foo){
@select(field=myForm("selectField"),options=optionValues)
}
我不知道如何在java中创建Seq [(String)(String)]。我需要用我的枚举类中的对(id,title)来填充这个集合。
有人可以向我展示如何使用选择助手吗?
我在用户群上找到了this个帖子,但凯文的回答对我帮助不大。
答案 0 :(得分:40)
正确的类型是:Seq[(String, 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>
。