将应用程序从1.3.7迁移到2.0.0时,我们遇到了一个奇怪的问题。 我们的应用程序呈现的HTML被我们的浏览器视为UTF-8编码。
当我们在输入中输入'é'字母(代码点:00E9 / utf8十六进制字节:c3 a9)并将其发送到控制器时,我们返回一个c3 83 c2 a9
请求编码良好(%C3%A9),但我们的params.field返回我刚刚说过的内容
我们的1.3.7 Grails应用程序在同一台机器上运行良好。
我们已经看到this problem似乎已关闭并将webxml插件升级到1.4.1但没有任何改变。
我们发现在生成的web.xml中的CharacterEncodingFilter之前声明了Spring-Security-Core web.xml过滤器,并尝试删除该插件。它没有帮助。
我们已经使用相同配置的grails 2.0设置了一个hello world应用程序,但它可以正常工作
有人知道会发生什么吗?
这是我们的application.properties
#Grails Metadata file
#Thu Jan 26 17:50:12 CET 2012
app.grails.version=2.0.0
app.name=plugin-web
app.servlet.version=2.4
app.version=0.1
plugins.hibernate=2.0.0
plugins.joda-time=1.3.1
plugins.resources=1.1.5
plugins.spring-security-core=1.2.7.1
plugins.tomcat=2.0.0
答案 0 :(得分:1)
好的,所以这似乎是一个时间问题
当我们将项目迁移到2.0.0时,grails为我们的项目安装了webxml 1.4.0插件。从那时起,即使升级到1.4.1版本并多次清理项目,我们也无法使项目按预期工作。
因此,我们回到了备份的1.3.7版本并升级到grails 2.0。然后grails安装了webxml 1.4.1插件,一切正常。请注意,降级到1.4.0版本会使问题再次出现
现在一切正常。我不知道grails-2.0.0将这些链接缓存到1.4.0版本,因为我们清理了项目,rm -rf'ed .m2,.ivy2,.groovy-ivy-cache(Everything ... There只有rm命令留在文件系统上:-D)但这不再是我的问题了