I'm trying to use views.html.helper.select
(documentation here). I don't know scala, so i'm using java. I need to pass object of type Seq[(String)(String)] to the template right? Something like:
@(fooForm:Form[Foo])(optionValues:Seq[(String)(String)])
@import helper._
@form(routes.foo){
@select(field=myForm("selectField"),options=optionValues)
}
I don't know how to create Seq[(String)(String)] in java. I need to fill this collection with pairs (id,title) from my enum class.
Can somebody show me some expample how to use the select helper?
I found this thread on users group, but Kevin's answer didn't helped me a lot.
The right type is: Seq[(String, String)]
. It means a sequence of pairs of String. In Scala there is a way to define pairs using the arrow: a->b == (a, b)
. So you could write e.g.:
@select(field = myForm("selectField"), options = Seq("foo"->"Foo", "bar"->"Bar"))
But there is another helper, as shown in the documentation, to build the sequence of select options: options
, so you can rewrite the above code as:
@select(myForm("selectField"), options("foo"->"Foo", "bar"->"Bar"))
In the case your options values are the same as their label, you can even shorten the code to:
@select(myForm("selectField"), options(List("Foo", "Bar")))
(note: in Play 2.0.4 options(List("Foo", "Bar"))
doesn't compile, so you can try this options(Seq("Foo", "Bar"))
)
To fill the options from Java code, the more convenient way is to use either the overloaded options
function taking a java.util.List<String>
as parameter (in this cases options values will be the same as their label) or the overloaded function taking a java.util.Map<String, String>
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With