【发布时间】:2014-01-22 18:33:20
【问题描述】:
我在 HTML 表格中显示行,表格每一行的列中都有一个复选框,如下所示。
<s:iterator value="objects" status="loopStatus">
<td>
<s:label for="%{id}" value="%{#loopStatus.index+1}"/>
<s:checkbox id="%{id}" name="chk" fieldValue="%{id}" value="false"/>
</td>
<!--Other columns-->
</s:iterator>
objects 是 JPA 实体的对象列表,List<Entity> 在动作类中初始化。 id 是 Long 类型的值,对应于数据库中的主键列。
当提交表单时,这些复选框的值被设置为动作类中的相应属性。
private List<Long>chk;
//setters & getters.
选中复选框的值已正确设置为此属性chk。然后使用此值列表从数据库中删除行。
这很好用。当表中只有一行时,就会出现问题。在这种情况下,在执行除删除以外的操作(如更新/插入行)时会发生不必要的转换错误,这需要选中此复选框,这是非常不必要的,应该只在执行删除时发生。
字段“chk”的字段值无效。
如果我故意添加一个额外的同名复选框chk,那么这个转换错误就会消失。
据推测,单个复选框似乎未正确映射到 Long、List<Long> 类型的值列表。
当HTML表格中只有一行要显示时,有什么方法可以消除这个错误?
【问题讨论】:
标签: java checkbox struts2 delete-row