我的生产 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,但没有结果。
看来我的情况与许多其他情况相反
- Tomcat中的Grails请求参数编码问题
- http://9exception.com/question/168139
- GRAILS 2.0 上的表单编码问题
- Grails 未正确编码 unicode 字符
任何人都可以帮忙吗?
谢谢。