Observatorio de Grails 
  • Inicio
  • Actualidad
  • Artículos
  • Tutoriales
  • Eventos
  • Foro
  • Acerca de
SQ30 – Básico – Forzar la ordenación de las asociaciones SQ32 – Intermedio – Obtener artefactos en la consola
ene 31

SQ31 – Intermedio – Parámetros web multivaluados

publicado por Enrique Medina Montenegro

0 comentarios
1.050 visitas
(4 votos, media: 5,00)

Enrique Medina Montenegro

Twitter  |  LinkedIn

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.

Del.icio.us Facebook LinkedIn Twitter

Escribir un comentario

Clic para cancelar respuesta.

Actualidad  Entradas relacionadas  si te ha interesado la entrada te proponemos otras lecturas relacionadas

  • jul21

    Grails y UrlRewriteFilter: Problemas con parámetros (inglés)

    publicado por Enrique Medina Montenegro en Grails

    0 comentarios
    413 visitas
    (1 votos, media: 3,00)
  • oct13

    Cómo gestionar parámetros multi-fichero (inglés)

    publicado por Enrique Medina Montenegro en Grails

    0 comentarios
    438 visitas
    (1 votos, media: 2,00)
  • mar22

    Múltiples parámetros con la etiqueta ‘remoteFunction’ (inglés)

    publicado por Enrique Medina Montenegro en Grails

    0 comentarios
    517 visitas
    (1 votos, media: 2,00)

Comentarios recientes  Comentarios recientes

  • pedro luis hola como cargo imágenes de un archivo para mostrarlo en un reporte con los demás datos; en Reportes en Grails con iReport
    17/05/2012 a las 21:03

  • yo 123; en Clusterizar una aplicación Grails con EhCache (inglés)
    24/04/2012 a las 17:33

  • yo muy buebo; en Clusterizar una aplicación Grails con EhCache (inglés)
    24/04/2012 a las 17:21

Twitter  

preload preload preload

Síguenos en Twitter  |  Facebook
Inicio  |  Actualidad  |  Artículos  |  Tutoriales  |  Eventos  |  Foro  |  Acerca de

© 2010 Observatorio de Grails. Todos los derechos reservados.