У меня есть форма, настроенная для отправки запроса 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>