request.JSON在Grails中为空

时间:2015-04-02 15:14:07

标签: json grails

我有一个Angular前端向我的服务器发送JSON更新,但Grails不会在控制器中看到它。我刚升级到Grails 2.5。 我的EpisodeController上有一个名为'/ addGuest'的控制器方法:

def addGuest(Episode episode) {
    println "J: "+ request.JSON;
}

我正在从Angular发送以下内容

    service.addGuest = function(episode, guest) {
        return $http.put(getUrlForId(episode.id)+"/addGuest", {guest: guest});
    }

客人json看起来像

{guest: {name: "a", email: "a"}}

我的路线是

"/episode/$id/addGuest"(method: 'PUT', controller: "episode", action: "addGuest", parseRequest: true)

但是当我从Angular或Rest Console chrome插件发送数据时,request.JSON始终是空白的“[:]”。如果我将RestConsole中的Content-type从'application / json'更改为'text / plain',则数据会显示出来!通过json获取数据似乎是一个基本的东西,应该只是工作,所以我敢肯定我有一些搞砸了。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:4)

我有一个类似的问题,并且在问题上绞尽脑汁,我想一旦grails填充你的Episode对象,请求.JSON就会被清空。缓冲区用完了。您可以删除Episode作为方法的参数,并在发生任何其他处理之前查看request.JSON是否可用。

def addGuest() {
    println "J: "+ request.JSON;
}

顺便说一句,如果您需要通过JSON发送比进入域更多的数据,请使用命令对象,然后将您需要的内容复制到相应的域中。这样,你仍然可以让grails做它的常规东西。