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.