2015-07-04 6 views
0

В Grails 2.5.0 можно ли ввести значение свойства из тела JSON POST в параметр метода контроллера, который не является объектом команды? например, в String, примитив и т. д.Grails 2.5.0 Параметры метода управления от объекта JSON POST

Это возможно в Grails 2.2.4, но я не нашел способ сделать это в 2.5.0.

(я знаю, что строки запроса значение может быть введено в параметры метода действий контроллера в обоих Grails 2.5.0 & 2.2.4)

ответ

0

См Binding Request Body To Command объекты раздела http://grails.github.io/grails-doc/2.3.0/guide/introduction.html#whatsNew23. Это немного изменилось в Grails 2.3.x. В принципе, если вы попытаетесь получить доступ к запросу JSON два раза, он не будет доступен вам, поскольку Grails закрывает поток запросов после разбора данных и использует его для привязки любого CommandObject или любого экземпляра домена (как объекта команды).

Так что, если вы передаете запрос JSON к действию сказать, поддержка: {"foo": "bar"} и вы пытаетесь сделать это:

class SomeController { 

    def test(String foo) { 
     println foo  // Will be null 
     println request.JSON.foo   // Will be "bar" 
    } 
} 

Вместо любой класс домен связывания теперь будет работать:

class MyDomainClass { 

    String foo 
} 

И модифицированное действие контроллера:

class SomeController { 

    def test(MyDomainClass domainInstance) { 
     println domainInstance.foo  // Will be "bar" 
     println request.JSON   // Will be null since request stream is closed and binded to the domainInstance 
    } 
} 
+0

Благодарим за информацию. Похоже, что Grails 2.3+ не может вводить объекты без команд в методы действий. Я должен был упомянуть, что я уже знал, что могу использовать объект команды или 'request.JSON' для получения свойств тела JSON HTTP. Мне не нужно было просматривать каждый метод действий в каждом контроллере, а затем менять код в каждом затронутом методе, чтобы передать данные тела тела String/primitive (так как оба объекта команды и запрос request.JSON требуют изменения кода) , – XDR

+0

О, так вам нужен альтернативный код для поддержки вашего кода, поскольку он не поддерживается в Grails 2.3+? –

+0

Мне не нужно иметь альтернативу, но было бы неплохо избегать просмотра множества контроллеров и сотен методов действий, которые я не писал, чтобы определить, какие аргументы из строк запроса, и которые из HTTP-объектов , – XDR

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

  • Нет связанных вопросов^_^