【问题标题】:Grails - JSON param request not passing to controllerGrails - JSON参数请求未传递给控制器
【发布时间】:2014-11-17 15:53:29
【问题描述】:

我想将 JSON 传递给我的请求。 但无法找到 JSON。

@Secured(['ROLE_STUDENT'])
def validate() {
    println params
    println request.JSON
}

结果:

[controller:student, action:validate, id:2345444]
[:]

网址:

curl -i -H "Content-Type: application/json" -X POST -d '{"studentScores":[{"id":"2","score":"17"}],"comment":"good"}' 'http://localhost:8080/myapp/studient/2345444/validate' -H 'Cookie: JSESSIONID=3CCDC701553A2208428BB7135DDA5546'

我尝试了 GET 和 POST,以及 à JQuery

$.ajax({
    url: urlSubmit,
    type: 'POST', 
    data: JSON.stringify(student),
    contentType:"application/json; charset=utf-8",
    dataType: "json"
});

Grails 2.4.4 Java 8(合规级别 Java 7) 雄猫 8

一些插件: 弹簧安全核心:2.0-RC4 弹簧安全脸书:0.16.2 spring-security-oauth2-provider:2.0-RC2

需要你的帮助

【问题讨论】:

  • 问题是我有一个域类作为我的方法的参数:def validate(Student s) { }。这很奇怪,但是这样,request.JSON 就变成了空的。为了修复它,我删除了参数。

标签: json grails params


【解决方案1】:

请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html (9.3 GET)。

GET 方法意味着检索由 Request-URI 标识的任何信息(以实体的形式)

Request-URI 是这里的重要部分。 GET 请求中没有正文数据的概念。

所以,更改为 POST 并且您的请求应该可以工作。

【讨论】:

  • 我尝试了 GET,因为 POST 不起作用,但两者的效果相同 -> 不起作用
  • 使用 GET 将不起作用。我只是创建了一个应用程序并使用postman 发出请求,我完美地收到了 json。也许问题出在另一个地方。例如,您是否对 urlMappings 进行了任何更改?
  • 我对curl不熟悉,可能你的curl请求有问题
【解决方案2】:

首先,你在 curl 中的 url 中有一个错误 :)

http://localhost:8080/myapp/STUDIENT/2345444/validate

试试这个代码

def json = JSON.stringify(params)

但我不确定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 2018-10-07
    • 2011-09-02
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    相关资源
    最近更新 更多