action 中有个PageBean pageBean对象, 
  pageBean中有属性List dataList, 
    dataList中装了一些User user对象, 
      user 包括(String name, String code, boolean selected), 
首先从action中转向页面 
页面中是这样写的 
<s:iterator value="pageBean.dataList" id="pageUser"> 
<tr> 
<td height="20" bgcolor="#FFFFFF"> 
<div align="center"> 
<span class="STYLE1"> <s:property value="code" /> 
</span> 
</div> 
</td> 
<td height="20" bgcolor="#FFFFFF"> 
<div align="center"> 
<span class="STYLE1"> <s:property value="name" /> 
</span> 
</div> 
</td> 
<td height="20" bgcolor="#FFFFFF"> 
<div align="center"> 
<span class="STYLE1"> 
<s:property value="selected" /> 
<s:checkbox label="选中否" name="selected" theme="simple" /> 
</span> 
</div> </td> 
</tr> 
</s:iterator> 在action中我把user的selected设置为true或者为false,然后在页面上就相应的显示为选中或者没有选中,这个显示是没有问题的。 问题是我在页面上做修改后,(就是原来的选中改为取消,或者取消改为选中),再提交,还是同一个action中的方法,selected的值却没有改变,还是以前的,谁能告诉我是怎么回事。要怎样才能得到选择后的值。 
提交的方法是: 
public String settingStaff_forwardPage() 

List pageDataList = this.pageBean.getDataList(); 
for (int i = 0; i < pageDataList.size();i++) 

PageUser pu = (PageUser)pageDataList.get(i); 
System.out.println(pu.getUsername() + "= " + pu.getSelected()); 


解决方案 »

  1.   

    实际上struts2 框架中关于checkbox 这个标签你使用时候要注意。在我们以前的jsp/servlet处理中,使用普通的html标签,可以通过判断复选框的name 属性所指定的请求参数是否存在来获取用户是否选中了复选框,如果选中则取出值。但是你在struts2中 有了变化,复选框的值是true或者是false,是由fieldValue属性来控制的,而不是value属性.你检查下你的标签中fieldValue是true还是false.我个人在实际开发中因为这里会跟传统的习惯不适应,所以针对复选框我还是使用传统的html标签在服务端获取下表单中的这个复选框所代表的属性是否有值 来判断选中和未选中。 你需要手动判断处理下。