我是 Grails 的新手。我的 JDBC url (Datasource.groovy) 是
development {
dataSource {
dbCreate = "create-drop"
url = "jdbc:mysql://localhost/test?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
}
}
我已遵循 Grails not encoding the unicode characters properly 中的建议我手动将记录更新为汉字。它在浏览器中正确显示。但是当我把它存回去时,我得到了垃圾。所以我认为数据库连接已经在 UTF-8 中,但表单数据未在 UTF-8 中解码。修复似乎是设置 useBodyEncodingForURI 但我在 Grails 包中找不到 server.xml 文件。
我能做什么?
最佳答案
没有 server.xml - 一切都以编程方式配置。有几个 Hook ,您可以在其中进行一些更改,所以这实际上非常简单。
在您应用的 scripts
文件夹中创建一个名为 _Events.groovy
的文件。添加此代码:
eventConfigureTomcat = { tomcat ->
tomcat.connector.useBodyEncodingForURI = true
}
这是 ConfigureTomcat
事件的 Grails/Gant 事件回调处理程序,它发送管理大量逻辑的 org.apache.catalina.startup.Tomcat
实例对于嵌入式启动。它与相同版本的服务器安装代码相同,但有一些帮助程序类使事情变得更容易。
快速查看 API,您会看到 Tomcat
实例有一个 getConnector
访问器,用于配置为端口 8080 HTTP 1.1 的 Connector
连接器,也删除项目,但在常规 Tomcat 中,这里也是如此。
除了编辑现有的已配置类之外,您还可以注册新的 servlet、过滤器,甚至整个 WAR 文件。
关于tomcat - 如何在 Grails 捆绑的 tomcat 中设置 useBodyEncodingForURI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26544915/