供稿人:杨兵
保存动态表时异常:java.lang.ArrayIndexOutOfBoundsException
动态表结构大致如下:
<g:dynamicTable ...>
...
<tr>
<input name="item.id" ... />
<input name="item.x" ... />
<input name="item.y" ... />
</tr>
<tr>
<input name="item.id" ... />
<input name="item.x" ... />
<input name="item.y" ... />
</tr>
<tr>
<input name="item.id" ... />
<input name="item.x" ... />
<input name="item.y" ... />
</tr>
<tr>
<input name="item.id" ... />
<input name="item.x" ... />
</tr>
...
</g:dynamicTable>
问题分析:
动态表保存时,每个字段都是一一对应的,如上例中有4个 item.id 字段、4个 item.x 字段,但是只有 3 个 item.y 字段,这样保存时肯定会出现数组越界问题。
因此,即便实际情况是第4个 item.y 不需要显示出来,也需要在对应的行列中添加一个隐藏的 item.y 字段,如:
<input type="hidden" name="item.y" ... />