我遇到了包含对象映射的命令对象的数据绑定问题。这是我的命令对象:
class SaveEntries {
Map<Integer, EntryRow> entryRows = new HashMap<Integer, EntryRow>()
String name
}
class EntryRow {
int systemID
def hours = ["","","","","","",""]
}
这是我的控制器代码:
def save() {
println request.parameters
println params
def saveEntries = new SaveEntries()
bindData(saveEntries, params)
saveEntries.entryRows.each{ k, v -> println "${k}:${v.systemID}" }
println saveEntries.name
}
这是我的表格:
<form action="main/save">
<input type="text" name="name" value="test"/>
<input type="text" name="entryRows[0].systemID" value="1"/>
<input type="text" name="entryRows[0].hours[0]" value="5"/>
<input type="submit"/>
</form>
最后,这是我得到的输出:
[entryRows[0].systemID:[1], name:[test], entryRows[0].hours[0]:[5]]
[entryRows[0].systemID:1, entryRows[0]:[systemID:1, hours[0]:5], name:test, entryRows[0].hours[0]:5, action:save, format:null, controller:main]
test
正如您所看到的,entryRows地图没有填充任何内容。如果我使用name =“entryRows ['test'] value =”test“,我可以使用Map来填充,但是一旦我尝试使用对象作为密钥,数据绑定就会失败。
谁能看到我哪里出错了?谢谢!