struts2 如何将 checkboxlist设置为多行显示 (正确版)

来源:互联网 发布:filter java 详解 编辑:程序博客网 时间:2024/05/16 04:45

 前面我写过在struts2中 如何将 checkboxlist设置为多行显示的帖子,但是那个写法其实是错误的,只是个假象而已,虽然也能正确显示正确提交,但是存在眼中的BUG,而且代码逻辑错误,属瞎猫碰死耗子误打误撞。

先前的为什么错误?

因为checkboxlist放在迭代中,它的ID都一样,所以你选择哪个选项,其实都只有最后一个选项有效,也就是因为ID都一样,最后一个选项把先前的都覆盖了。

我最终改为checkbox单选框,每行都是一个checkbox,这样就解决问题了,代码如下:

<table width="90%" height="100%" border="0"> 
    <s:iterator value="listRole" status="stat"> 
        <tr <s:if test="#stat.odd">class="row1" </s:if> 
              <s:else>class="row2" </s:else>> 
                    <td align=left> 
                            <s:checkbox name="selectRoleList" id="%{roleId}" value="roleListSelected[#stat.index]" fieldValue="%{roleId}"/> 
                            <s:property value="roleName"/> 
                    </td> 
        </s:iterator>
</table>

我从数据库查出所有选项,如果是被选中的赋值为“true”,如果是未被选中的赋值为“false”,放到roleListSelected这个LIST里,然后roleListSelected[#stat.index]"相当于roleListSelected[i]",来显示页面中选中或未被选中 。
如果提交的话,页面会自动将选择了的项目存在selectRoleList这个LIST(也可定义为数组)中,就可以传到action中