如何在Grails捆绑的tomcat中设置useBodyEncodingForURI

时间:2014-10-24 09:12:52

标签: tomcat grails

我是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文件。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

没有server.xml - 所有内容都是以编程方式配置的。有一些钩子你可以做一些改变,所以这实际上非常简单。

在应用的_Events.groovy文件夹中创建名为scripts的文件。添加以下代码:

eventConfigureTomcat = { tomcat ->
   tomcat.connector.useBodyEncodingForURI = true
}

这是ConfigureTomcat事件的Grails / Gant事件回调处理程序,它发送管理嵌入式启动的许多逻辑的org.apache.catalina.startup.Tomcat实例。它与相同版本的服务器安装的代码相同,但有一些辅助类可以使事情变得更容易。

快速浏览API,您会发现Tomcat实例具有getConnector访问者,可以Connector配置为端口8080 HTTP 1.1连接器,并且还可以删除项目,但在常规Tomcat中,以及类似的地方。

除了编辑现有的已配置类之外,您还可以注册新的servlet,过滤器,甚至整个WAR文件。