因为checkboxlist 出来的所有元素都只能在一行,我想每个元素都占一行,于是
我的代码如下:<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:checkboxlist name="roleListSelected" list="#stat.index" listKey="roleId" listValue="roleName"/>
</td>
</s:iterator>
</table>虽然是成功了,但是发现了一个大BUG,就是我点每个元素的文字时,就是勾后面的文字,最后一行的元素都会被选上,点勾没事,这是为什么?为什么?

解决方案 »

  1.   

    所有元素都只能在一行,我想每个元素都占一行,你看看生成的HTML源代码!是什么原因,呵呵
    想占一行的话,可以修改free模板
      

  2.   

    谢谢,问题解决了,我就是通过生成的HTML代码发现问题的。因为将checkboxlist循环迭代,每个checkboxlist 的ID都是一样的,所以不管选哪个选项,其实都是最后一个有效,也就是因为ID相同,最后一个把前面的都覆盖了。而且这么做思路本身就不对。我换成了单选框就解决了问题,我会把改好的代码贴出来。
    我的水平还未到改模板的时候,呵呵
      

  3.   

    <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>
    我改成了单选框
    我从数据库查出被选择的项,放到roleListSelected这个LIST里,然后roleListSelected[#stat.index]"相当于roleListSelected[i]" 。
    如果提交的话,页面会自动将选择了的项目存在selectRoleList这个LIST(也可定义为数组)中,就可以传到action中