De nuevo os traigo un truquito que he leido en el observatorio, concretamente en el post SQ31 – Intermedio – Parámetros web multivaluados.
¿Nunca habéis tenido que recoger de los parámetros un campo con varios valores? Pues yo sí, y antes de leer este post he de decir que me volvía loca para convertir lo que recibía en algo que pudiera manipular cómodamente.
Supongamos que nos llega por parámetros ?sector=Construccion§or=Comercio§or=Desarrollo. Normalmente recogeríamos los parámetros así:
class SectorController
{
def list = {
def sectores = params.sector
println sectores
//resto de código
}
}
Al realizar la llamada con los parámetros de antes, el println mostraría [Construcción, Comercio, Desarrollo], que puede parecer que es lo que buscábamos, pero en realidad lo que estamos obteniendo es un String, no un array. Por tanto, para poder manipularlo tendríamos que convertir a mano ese String en una lista, y creedme, puede ser un tanto engorroso.Aquí es donde entra en juego params.list(). Cambiemos el código anterior por este:
class SectorController
{
def list = {
def sectores = params.list('sector')
println sectores
println sectores[0]
//resto de código
}
}
El primer println nos mostrará el mismo texto que antes, [Construcción, Comercio, Desarrollo], pero en esta ocasión sí que se trata de un array. Por tanto, el siguiente println nos mostrará Construcción, que es el primer elemento del array que hemos recibido por parámetros.Ya sabéis, para recibir parámetros multivaluados recordad usar params.list, que os ahorrará bastantes problemas a la hora de tratar los datos.
Enjoy!


2 comentarios:
Simplemente muchas gracias.
dato muy util, muchas gracias
Publicar un comentario