我想在jsp中做回显,其中operations是本项目数据库中的所有操作,operationList是某个角色所拥有的操作。moduleList是所有的模块集合,每个模块中有不同操作,一个角色有多个操作(权限)。
RoleAction
/**
 * 修改角色
 * */

public String showModifyRole(){
role = authorizeService.getOperationsByRoleId(role.getId());
operationList = new ArrayList<Operation>(role.getOperations());
moduleList = authorizeService.getModules();
operations = new ArrayList<Operation>();
for (int i = 0; i < moduleList.size(); i++) {
Module module = (Module)moduleList.get(i);
operations.addAll(module.getOperations());
}
role = authorizeService.getRoleById(role.getId());
return SUCCESS;
}jsp页面modifyRole.jsp<s:iterator value="moduleList" id="module" status="module">
<tr>
<td><s:property value="#module.label"/></td>
<td>
<table>
<s:checkboxlist list="operations"  name="operations.id" labelposition="top" 
listKey="id"
listValue="name"
value=""
>
</s:checkboxlist>
</table>
</td>
</tr>
</s:iterator>
请问在value中写,可以默认选中进而可以回显,还有就是迭代时第一个module.label怎么没显示。数据有查出来。。

解决方案 »

  1.   

    不管是struts几,道理都是一样的,就是后台取到数据,送到前台去;
    你先看看你的数据存储到form或者request里面没有。
      

  2.   

    我建议你先看看 Struts2 的 Tag Reference ;
    "Creates a series of checkboxes from a list."
    这个标签的作用仅仅是从拿到一个集合, 然后按照集合中的元素根据 listKey(<input name=../>) 与 listValue(<s:label ..../>) 来创建多个 checkbox, 你知道这个标签的作用后再想想, 他能够实现回显吗?  
    他仅仅是将集合中的元素转换成 checkbox, 并没有选择的功能; 
     
    如果你想获得回显选中的功能, 那需要使用 <s:iterator > ,准备两个字段, 一个是 AllOperations, 一个是 AvaliableOperations, 使用 AllOperations 展现所有,并在 <s:iterator >中进行判断如何其中的某一个与
    AvaliableOperations 中的相同,则设置成 selected;
      

  3.   

    <s:iterator value="moduleList" id="module" status="module"> 
    ??id 和 status 一样,你到底想让module代表id还是代表status??