2012-07-02 13 views
11

Quiero generar una URL como esta:?Juego marco 2: Uso Matriz [String] en la ruta

/foto tags = tag1, tag2, tag3 archivo

rutas:

GET  /photo controllers.Photos.list(tags:Array[String] ?= "") 

Tengo este error en la consola de juego:

n QueryString Binder encontró para el tipo Array [String]

¿Cuál es la mejor manera de lograr esto?

Gracias.

+0

manera correcta de hacer una matriz en parámetros de consulta (sin importar el marco) por lo que entiendo es realmente así/photo? Tags = tag1 & tags = tag2 & tags = tag3 ... es un poco detallado pero la especificación permite la repetición de esa manera –

Respuesta

10

creo que se debe utilizar un común String y luego tener cuidado acerca de su conversión a un Array en sus rutas controller

:

GET  /photo controllers.Photos.list(tags:String ?= "") 

en Java:

public static Result list (String tags){ 
    String[] tagsArray = tags.split(","); 
    // do something with tagsArray 
    return ok(); 
} 
+0

Esa fue mi primera idea. Usaré esta solución. – mcarrolle

+4

La forma descrita por @Ahmed Aswani a continuación es la forma "correcta" de hacerlo en HTTP. – sven

16

juego se enlazará a listas/listas de arreglos cuando los valores estén en la cadena de consulta o publique datos con el mismo nombre.

esto también parece funcionar:

This route: http://localhost/controller/{id} 

esta URL: http://localhost/controller/1?id=2&id=3

se unirán a controller(int[] id) donde id -> {1, 2, 3}

publicación de id = 2 & Identificación = 3 también se unirá a una matriz.

referencia: https://groups.google.com/forum/?fromgroups#!topic/play-framework/c5kB6wmcF8Q

10

Usando una lista en lugar de una matriz debería funcionar.

Si está utilizando Java, funciona así:

GET  /photo controllers.Photos.list(tags: java.util.List[String]) 
+0

¡He buscado esto por varias horas! Resulta que no puedes usar List [String]. ¡usará el tipo de scala por defecto! ¡Aparecerá la siguiente excepción! tipo no coincide; encontrado: Lista [String] (en scala.collection.immutable) requerido: Lista [_] (en java.util) Usar el nombre completo del paquete es la forma correcta de hacerlo –

2

Como acotación al margen, si desea pasar una matriz de Longs, esto funciona:

GET /photo controllers.Photos.list(tags: java.util.List[java.lang.Long])

con el función de controlador tomando List<Long> tags como argumento.

Cuestiones relacionadas