2012-02-07 56 views
5

我的grails应用程序不会正确解码请求参数。Tomcat中的Grails请求参数编码问题

Config.groovy中:

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

我所有的GSP在head元素的页面指令使用contentType="text/html; charset=UTF-8"以及<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

然而,当我收到我的控制器从param对象张贴的参数,应用程序只是打印垃圾...

我使用Grails 1.3.7版本部署在Tomcat的5,其他已安装的插件,除了tomcat的:

冬眠1.3.7 的jQuery 1.7.1 弹簧安全核心1.2.6 webxml 1.4

编辑:从进一步的调试,我注意到,该应用程序将运行在码头的罚款。所以我怀疑它一定是一个tomcat问题。我的问题是类似的to this post(唉,我不使用Shiro插件)。

任何人都可以帮忙吗?

+0

数据库垃圾中的内容,还是只打印了内容?你有没有安装webxml插件(运行'grails list-plugins --installed')? – 2012-02-07 17:03:50

+0

从进一步调试问题出现在Web层。提交的值在他们到达控制器时已经是垃圾了。 – 2012-02-07 17:43:49

+0

我安装的插件是:hibernate 1.3.7,tomcat,jquery 1.7.1,spring-security-core 1.2.6和webxml 1.4 – 2012-02-07 18:30:32

回答

8

您需要将URIEncoding='UTF-8'添加到conf/server.xml中的Connector元素,例如,

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

这说明如下:https://wiki.apache.org/tomcat/FAQ/CharacterEncoding

+0

感谢您的回复。我的问题实际上是POST参数。如果我正确理解FAQ,URIEncoding仅适用于GET参数。不过,我给了它一个镜头,但也没有工作。这可能是一个长镜头,但它可能是我生成的web.xml中的过滤器顺序?在那里,我有以下顺序过滤器:springSecurityFilterChain - > sitemesh - > charEncodingFilter - > urlMapping - > hiddenHttpMethod - > grailsWebRequest – 2012-02-10 11:52:49

+0

对不起,我没有发现你使用webxml 1.4 - 你需要使用1.4.1修复了这个charEncodingFilter命令错误。您还需要升级到更高版本的Spring Security Core,因此您应该使用1.2.7.2(最新版本)。 – 2012-02-10 15:02:02

+0

感谢所有Burt的帮助。 – 2012-02-11 17:27:24

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

由于FAS,因为没有最终的结论作出的,我想与大家分享我的经验研究在同样的情况。 Here可以找到更多的讨论。

我的情况,我有包括本地MySQL在本地pc上的windows下的开发环境。 Production Env - CentOS 6,MySQL,Tomcat 6在Apache之后。

在开发环境 - 一切都是o'k,但在生产 - 没有。 帮助我的唯一的事情 - 设置autoreconnect=true&useUnicode=true&characterEncoding=UTF-8另外建议Tomcat URIEncoding='UTF-8'

所以,问题是在正确的设置Java驱动程序为MySQL。