-
jul21
Grails y UrlRewriteFilter: Problemas con parámetros (inglés)
publicado por Enrique Medina Montenegro en Grails
413 visitas -
oct13
Cómo gestionar parámetros multi-fichero (inglés)
publicado por Enrique Medina Montenegro en Grails
438 visitas -
mar22
Múltiples parámetros con la etiqueta ‘remoteFunction’ (inglés)
publicado por Enrique Medina Montenegro en Grails
517 visitas
SQ31 – Intermedio – Parámetros web multivaluados
publicado por Enrique Medina Montenegro
Enrique Medina Montenegro
Con más de 14 años de experiencia en el mundo de las TI, donde comenzó desarrollando aplicaciones de escritorio en Delphi o Visual Basic, este Ingeniero en Informática por la Universidad de Alicante (1991-1996) ha ido perfilando su actividad profesional hacia las arquitecturas J2EE, donde siempre ha seguido muy atento, e incluso colaborado en ocasiones, con proyectos open-source como MyFaces, Spring, Hibernate, Groovy o Grails. Ocupando puestos desde Programador Junior hasta Arquitecto Senior de Soluciones, Enrique ha sido testigo de cómo ha ido evolucionando la tecnología en torno al desarrollo de aplicaciones web, adquiriendo un conocimiento y experiencia que le permiten evaluar con detalle las necesidades de cada proyecto y aplicar las herramientas que maximizan su productividad. Actualmente, Enrique se ha especializado en el framework de desarrollo Grails, y ejerce la Dirección Técnica de proyectos basados, entre otras, en esta tecnología.
¿Sabías que… Grails ‘entiende’ los parámetros web multivaluados de forma que obtenerlos desde tu controlador es un juego de niños?
Un ejemplo típico es el caso en que nos llegan múltiples parámetros web con el mismo nombre, como por ejemplo ‘?nombre=Enrique&nombre=Alberto&nombre=Carlos’. Si aplicamos el método típico de obtención de parámetros en nuestro controlador, tendríamos algo como:
class UsuarioController {
....
def list = {
render "Valores = " + params.nombre + " y tipo del parámetro = " + params.nombre.class
}
}
Al hacer la llamada web ‘/miaplicacion/list?nombre=Enrique&nombre=Alberto&nombre=Carlos’ obtenemos por pantalla:
Valores = [Enrique, Alberto, Carlos] y tipo del parámetro = class [Ljava.lang.String;
Lo cual nos puede dar la impresión de que es lo que buscábamos, pero no es así. Si analizamos el tipo del parámetro web, sorprendentemente vemos que se trata de un simple String, y no una colección de valores como podríamos pensar al ver el resultado. Y claro, parsear una cadena String con forma de lista es algo engorroso...
Pero como siempre, Grails acude en nuestra ayuda y nos proporciona otro mecanismo para obtener el parámetro web que sabemos que es multivaluado:
class UsuarioController {
....
def list = {
render "Valores = " + params.list('nombre') + " y tipo del parámetro = " + params.list('nombre').class
}
}
Y esta vez sí, tal y como esperábamos, se trata de una lista de los valores del parámetro del mismo nombre que podemos iterar sencillamente al tratarse de una colección de verdad:
Valores = [Enrique, Alberto, Carlos] y tipo del parámetro = class java.util.Arrays$ArrayList
Recuerda: Cuando trabajes con parámetros web multivaluados utiliza el mecanismo ‘params.list’ para obtener todos sus valores como una colección de elementos fácil de iterar y procesar.


Entradas relacionadas 
Comentarios recientes