在Play Framework 2.0模板中使用选项助手

时间:2012-04-12 15:48:56

标签: scala playframework-2.0

我正在尝试使用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个帖子,但凯文的回答对我帮助不大。

1 个答案:

答案 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>