Grails 2.5.0 - командный объект обрабатывает POST-запрос с помощью JSON

У меня есть форма, настроенная для отправки запроса POST на контроллер Grails, который использует объект Command в качестве одного из параметров. Командный объект содержит некоторые свойства, связывающие правильно, наряду со списком элементов, который не связывается правильно. Я обычно отправляю другие параметры через запрос POST, но упаковываю список в виде строки JSON, так как я не уверен в другом способе отправки списка через POST (кроме, скажем, строки XML), Каков последний шаг в получении объекта команды для правильного связывания списка из строки, или есть лучший способ отправить список объекту команды?

Редактировать: вот упрощенная версия:

Тестирование URI:

request.forwardURI = 'list1=[{"listprop1":"a","listprop2":"b"}]&prop1=c&prop2=d'

Объекты команды:

class MyListCommand {
    String listprop1
    String listprop2

    static constraints = {
        listprop1 nullable: true
        listprop2 nullable: true
    }
}

class MyCommand {
    List<MyListCommand> list1 = [].withLazyDefault {
        new MyListCommand('[]')
    }
    String prop1
    String prop2

    static constraints = {
        prop1 nullable: true
        prop2 nullable: true
    }
}

Форма:

<form action="${createLink(action: 'myAction')}" method="post">
                <div ng-repeat="list1 in list1array">
                    <input type="hidden" name="list1[{{ $index }}].listprop1" value="{{list1.listprop1}}"/>
                    <input type="hidden" name="list1[{{ $index }}].listprop2" value="{{list1.listprop2}}"/>
                </div>
                <input name="prop1" type="text">
                <input name="prop2" type="text">
            </form>

1 ответ

Решение

Попробуйте отправить запрос следующим образом:

request.forwardURI = 'list1[0].listprop1=a&list1[0].listprop2=b&prop1=c&prop2=d'

Даже лучше

Лучше всего использовать Ajax с тегом g:remoteForm.

Другие вопросы по тегам