2012-04-12 8 views
21

Estoy tratando de usar views.html.helper.select (documentación here). No sé Scala, entonces estoy usando Java. Necesito pasar el objeto del tipo Seq [(String) (String)] a la plantilla ¿verdad? Algo así como:Uso de la opción auxiliar en las plantillas de Play Framework 2.0

@(fooForm:Form[Foo])(optionValues:Seq[(String)(String)]) 

@import helper._ 

@form(routes.foo){ 
    @select(field=myForm("selectField"),options=optionValues) 
} 

no sé cómo crear Sec [(String) (String)] en Java. Necesito llenar esta colección con pares (identificación, título) de mi clase enum.

¿Alguien me puede mostrar algún ejemplo de cómo usar el asistente de selección?

Encontré this hilo en el grupo de usuarios, pero la respuesta de Kevin no me ayudó mucho.

Respuesta

40

El tipo correcto es: Seq[(String, String)]. Significa una secuencia de pares de String. En Scala hay una manera de definir pares usando la flecha: a->b == (a, b). Por lo que podría escrito, por ejemplo:

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

Pero hay otro ayudante, como se muestra en la documentación, para construir la secuencia de seleccionar opciones: options, por lo que puede volver a escribir el código anterior como:

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

valores de sus opciones son las mismas que su etiqueta, incluso se puede acortar el código para:

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

(nota: de Juego 2.0.4 options(List("Foo", "Bar")) no compila, por lo puede probar esta options(Seq("Foo", "Bar")))

Para rellenar las opciones de código Java, la forma más conveniente es utilizar el options función sobrecargada tomar una java.util.List<String> como parámetro (en este valores de las opciones de los casos será el mismo que su etiqueta) o la función sobrecargada teniendo un java.util.Map<String, String>.

+0

Muchas gracias por su respuesta. Pero esto no soluciona mi problema. Necesito crear la colección y llenarla con valores en Java y luego pasar esa colección a la plantilla de scala. – UltraMaster

+0

Ah, entendí mal su problema, de hecho. Actualicé mi respuesta para sugerir formas de completar las opciones desde el código de Java. –

+0

'options (List (" Foo "," Bar "))' no me testeó, así que utilicé '@ myOptions = @ {List (" Foo "," Bar "). Map (str => str-> str)} ' –

Cuestiones relacionadas