我想用struts2的iterator 和checkbox在显示数据库中数据的tabel中的第一列加一列checkbox ,并在后台action中取选中的行的数据的id做update。
jsp页面如下
<s:iterator value="#request.goodslist" id="gls">
<tr>
<td><input type="checkbox" name="chkbox[%{#gls.index}]" value="#gls.gid"/></td>
<td><s:property value="#gls.gid"/></td>
<td><s:property value="#gls.gname"/></td>
<td><s:property value="#gls.image"/></td>
<td><s:property value="#gls.price"/></td>
<td><s:property value="#gls.discount"/></td>
<td><s:property value="#gls.detailinfo"/></td>
<td><s:property value="#gls.inventory"/></td>
<td><s:property value="#gls.gstate"/></td>
<td><s:property value="#gls.isRecommended"/></td>
<td><s:property value="#gls.scorelevel"/></td>
<td><s:property value="#gls.goodstype"/></td>
</tr>
</s:iterator>action中设Integer[] chkbox;字段并带有setter、getter方法。为什么chkbox取不到值?
刚刚开始学习,还是菜鸟,解决不了,求助高手。
<td><input type="checkbox" name="chkbox" value="#gls.gid"/></td>
这样写我也试了,结果是跳到了result input纠结了一天各个问题,也google了还是没有解决。希望大家能帮我解决。谢谢了。

解决方案 »

  1.   

    自己解决了,很遗憾,没人回答。
    我的解决方法是
    <td><input type="checkbox" name="chkbox" id="chkbox" value="#gls.gid"/></td>
    在action中写字段ArrayList chkbox=new ArrayList();并写上getter setter方法。 之所以之前数组凡是没有通过,我觉得可能是没有new数组,因为加入ValueStack vs=ActionContext.getContext().getValueStack();后debug vs的parameters中没有chkbox,开始以为因为写的事html标签action取不到,后来查了一下,说是struts2.0框架控制参数拦截,和用什么标签无关。因为struts标签(只有name)写的jsp在浏览器中查看源代码时生成的html标签的name和id是一样的,所以全都写成一样的了。
      

  2.   

    你给出的例子并不是同名的checkbox,如果真的是同名的话,比如是"chkbox"你可以在后台通过以下方法得到数组,
    request.getParameterValues("chkbox") 
    然后遍历即可。
      

  3.   


    二楼的回答很有用,但是看到你的回复之前我已经解决了问题了,且你这种方法同学也告诉我了。
    在SSH2的Action里应该用ActionContext.getContext().getParameters().get("chkbox");得到Object[]数组型values不过还是谢谢你哈!由于回复的人很少,所以回复皆有分,呵呵O(∩_∩)O~。