2014-11-17 7 views
0

Я хотел бы передать JSON в свой реквизит. Но не удалось найти JSON.Grails - запрос параметра JSON не передается контроллеру

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

Результат:

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

URL:

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) Tomcat 8

Некоторые плагины: весна-безопасности одножильных: 2,0-RC4 весна-безопасности facebook: 0.16.2 весна-безопасности oauth2-провайдер: 2,0-RC2

Нужна ваша помощь

+0

проблема заключается в том, что у меня есть класс домена в качестве параметра моего метода: def validate (Student s) {}. Это странно, но с этим request.JSON становится пустым. Чтобы исправить это, я удаляю параметр. – maryo

ответ

1

Посмотрите: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html (9.3 GET).

Метод GET позволяет получать любую информацию (в форме объекта) идентифицируется Request-URI

Request-URI является важной частью здесь. В запросах GET нет понятия данных тела.

Итак, измените POST и ваш запрос должен работать.

+0

Я пробовал GET beacause POST не работает, но оба имеют тот же эффект -> не работает – maryo

+0

С GET не будет работать. Я просто создал приложение и сделал запрос с помощью [postman] (https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm), я получил json отлично. Может быть, проблема в другом месте. Вы делали какие-либо изменения в urlMappings, например? – Victor

+0

Я не знаком с завитком, может быть, проблема в вашем запросе на завивание – Victor

0

Для первого и есть ошибка в вашем URL в завиток :)

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

попробуйте этот код

def json = JSON.stringify(params) 

, но я не уверен.

Смежные вопросы