在我将grails从2.3.7升级到2.4.3之后,所有request.JSON数据都被分解了。

时间:2014-08-29 11:31:18

标签: grails encoding character-encoding request

这是我的保存方法之一。

def domainInstance = new Domain(request.JSON)

domainInstance.save()

...

在升级Grails版本之前,我可以将韩语或其他语言保存到DB而不会出现任何编码问题。 将Grails升级到2.4.3后,使用request.JSON保存的所有AJAX输入数据都会显示如下。

(我也检查了数据库,但保存方式如上所述)

但是,使用params(form)请求的所有其他语言数据,它都保存为原样。

我检查了所有配置(grails.converters.encoding),请求标头的内容类型,GSP页面的字符集值,但是,所有设置都正确。(UTF-8)

所以,我测试如下

def data = request.reader.text

log.debug数据

log.debug request.getCharacterEncoding() - >打印出utf-8

def bindingData = JSON.parse(data) - >打印出与输入相同的数据

def domainInstance = new Domain(bindingData) - >当我检查数据库时,数据已正确保存

因此,我认为JSON.parse(请求)方法可能有问题。

但疯狂的是,这只发生在已部署的Linux服务器上。

它不会在当地环境中发生。

我希望有人给我很好的建议

我很厌倦这个问题。

这是我升级的插件列表,供您参考。

    build ":tomcat:7.0.55"
    compile ":scaffolding:2.1.2"
    compile ':cache:1.1.7'
    compile ":asset-pipeline:1.9.6"

    runtime ":hibernate4:4.3.5.5"
    runtime ":database-migration:1.4.0"
    runtime ":jquery:1.11.1"
    runtime ":resources:1.2.8"

    test ":code-coverage:2.0.3-1"

1 个答案:

答案 0 :(得分:0)

再次是我。 Tomcat设置导致此问题。 更改了语言环境配置后,它正常工作。 但是,我仍然不明白tomcat如何与之前的设置和grails 2.3.7一起工作。 无论如何,我希望这篇文章对于遇到类似问题的人有用。