在我的GSP中,我有一個表單,裏面填充了很多來自控制器的地圖的textfields,讓我把它放在一個例子中,因爲我的實際表單比這個複雜得多:提交表單文本字段不正確分組
例如,如果我用users
填充一堆文本框,我可以進入每個人的age
,我組合起來到一個名爲data
地圖,我想提交後處理並保存所有的信息:
<g:form useToken="true" name='example_form' action='submit'>
<g:each in='${users}' var='user' status='i'>
<g:textField name="data.${user.id}.name" value="${i.name}">
<g:field name="data.${user.id}.age" value="">
</g:each>
<button>Submit</button>
</g:form>
但是,當我打印出params.data在我的submit
控制器,我發現不僅我得到我所創建的data
地圖,我也越來越在它多了一堆垃圾:
for(i in params.data){
println "key: ${i.key} value: ${i.value}"
}
輸出:
key: 0.name value: john
key: 0 value: [age: 35, name: john]
key: 1.name value: liz
key: 1 value: [age: 24, name: liz]
key: 2.name value: robert
key: 3.name value: david
key: 0.age value: 35
key: 1.age value: 24
key: 2 value: [age: 44, name: robert]
key: 3 value: [age: 23, name: david]
key: 3.age value: 23
key: 2.age value: 44
我做有問題?
預期輸出:
key: 0 value: [age: 35, name: john]
key: 1 value: [age: 24, name: liz]
key: 2 value: [age: 44, name: robert]
key: 3 value: [age: 23, name: david]
看起來您正在以擴展和未擴展的形式獲取數據'Map' ......我認爲您必須處理它。嘗試在'for'循環內添加一個檢查,如'if(i.value instanceof Map)'。 – nickdos