0

我的生产 Grails 应用程序在解码 POST 请求参数时遇到问题。

每当参数仅包含 ASCII 字符时,文本中的所有空格都被解码为“+”号。因此,控制器获取的是“ this+is+a+test ”参数值,而不是“这是一个测试”。

更重要的是, 如果参数文本甚至包含一个非 ASCII 字符,例如,我们将拉丁语 'a' 替换为西里尔字母 'a',问题就消失了

是的,在 Intellij Idea IDE 11.x 中的 Windows 7 开发机器上运行应用程序或作为部署到独立本地 Tomcat 7.0.29 的战争存档时,一切正常。

生产应用程序部署为战争存档,所有依赖项都依赖于 SSL 连接器端口 8443 上的 Ubuntu/Tomcat 7.0.21。连接器配置有属性URIEncoding="UTF-8"

Config.groovy 中的设置是

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

所有 gsp在 head 元素中都有元声明http-equiv="Content-Type" content="text/html; charset=UTF-8" 。

应用插件是webxml:1.4.1 , tomcat:$grailsVersion , hibernate:$grailsVersion , spring-security-core:1.2.7.3 , spring-security-openid:1.0.4

作为最后一次尝试,我尝试将 Grails 版本从 2.2.0 升级到最新的 2.2.2,但没有结果。

看来我的情况与许多其他情况相反

任何人都可以帮忙吗?

谢谢。

4

1 回答 1

3

我终于通过将 Tomcat 版本从 7.0.21 升级到 7.0.39 解决了空间问题。未修改任何应用程序文件。

于 2013-05-06T08:13:26.207 回答