2012-02-07 24 views
5

La aplicación Grails no decodificará correctamente los parámetros de solicitud.Problema de codificación de solicitud de Grails en Tomcat

En config.groovy:

  • grails.views.gsp.encoding = "UTF-8"
  • grails.converters.encoding = "UTF-8"

Todo el uso de mi gsp contentType="text/html; charset=UTF-8" en la directiva de página, así como <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> en el elemento de cabeza.

Sin embargo, cuando recibo los parámetros enviados desde el objeto parámetro en mi controlador, la aplicación sólo imprime la basura ...

estoy usando Grails 1.3.7 versión implementada sobre Tomcat 5. Otros plugins instalados, excepto Tomcat:

hibernación 1.3.7 jQuery 1.7.1 spring-security-core 1.2.6 WebXML 1.4

EDIT: de depuración más, me he dado cuenta de que la aplicación se ejecuta bien en el embarcadero. Por lo tanto, sospecho que debe ser un problema de Tomcat. Mi problema es similar to this post (lamentablemente no estoy usando el plugin Shiro).

¿Alguien puede ayudar con esto?

+0

¿El contenido de la base de datos es basura o solo lo que se imprime? ¿Tiene el complemento webxml instalado (ejecute 'grails list-plugins --installed')? –

+0

para seguir depurando el problema está en el nivel web. Los valores enviados para cuando llegan al controlador ya son basura. –

+0

Mis complementos instalados son: hibernate 1.3.7, tomcat, jquery 1.7.1, spring-security-core 1.2.6 y webxml 1.4 –

Respuesta

8

Debe agregar URIEncoding='UTF-8' a los elementos Connector en conf/server.xml, p. Ej.

<Connector port='8080' protocol='HTTP/1.1' connectionTimeout='20000' 
      redirectPort='8443' URIEncoding='UTF-8' /> 

Esto se describe aquí: https://wiki.apache.org/tomcat/FAQ/CharacterEncoding

+0

Gracias por su respuesta. Mi problema es con los parámetros POST en realidad. Si entendí las preguntas frecuentes correctamente, la codificación URIE se aplica solo a los parámetros GET. Sin embargo, le di una oportunidad, pero tampoco funcionó. Puede ser una posibilidad remota, pero ¿podría ser el orden de los filtros en mi web.xml generado?Ahí tengo los siguientes filtros en ese orden: springSecurityFilterChain -> sitemesh -> charEncodingFilter -> urlMapping -> hiddenHttpMethod -> grailsWebRequest –

+0

Lo siento, no entendí que estás usando webxml 1.4 - necesitas usar 1.4.1 que corrige este error de orden charEncodingFilter. También necesita actualizar a una versión posterior de Spring Security Core, por lo que debe usar 1.2.7.2 (la última). –

+0

Gracias por toda la ayuda Burt. –

0
edit application.properties 
add(update) line: 
plugins.webxml=1.4.1 
0

lo que concierne a ninguna conclusión final hicieron, me gustaría compartir mi expierence en la misma situación. Here uno puede encontrar más discusión.

Yo mi caso, tengo el entorno dev bajo las ventanas en la PC local incluyendo MySQL local. Env de producción - Centos 6, MySQL, Tomcat 6 detrás de Apache.

En entorno de desarrollo: todo estaba en orden, pero en producción - no. La única cosa que me ayude - se estableció autoreconnect=true&useUnicode=true&characterEncoding=UTF-8 adicionalmente a las recomendaciones tanto para Tomcat URIEncoding='UTF-8'

Por lo tanto, el problema estaba en la configuración correcta del controlador Java para MySQL.

Cuestiones relacionadas