我要在jsp页面中迭代action中的list集合应该怎么做啊我的代码如下
action中的代码
private IRoleService roleService;
private List<Role> list;
public List<Role> getList() {
return list;
}
public void setList(List<Role> list) {
this.list = list;
}
public void setRoleService(IRoleService roleService) {
this.roleService = roleService;
}
public String listRole()
{
list = roleService.listAll();
if(list != null && list.size() > 0)
{
return "list";
}
return ERROR;
}
jsp页面代码
  <table width="100%">
    <thead>
      <tr>
          <th>角色名</th>
          <th>创建时间</th>
          <th>备注</th>
          <th>操作</th>
      </tr>
    </thead>  
    <tbody>
    <s:iterator value="list">
     <tr>
      <td><s:property value="roleName"/></td>
      <td><s:property value="roleCreateDate"/></td>
      <td><s:property value="roleRe"/></td>
      <td><s:a href="updateRole.action?id=<s:property value="id"/>">编辑</s:a>|<s:a href="deleteRole.action?id=<s:property value="id"/>">删除</s:a></td>
     </tr>
    </s:iterator> 
    </tbody>
  </table>
这样报错 !  不知道是哪里错了
  

解决方案 »

  1.   

    你没有request设置信息,jsp不知道你的那个list是什么
      

  2.   

    报什么错误?
    你这个list 没有初始化吧。
    private List<Role> list = new ArrayList<Role>();
      

  3.   

    list 没有初始化?
    贴出错误的内容来啊
      

  4.   

    <s:iterator value="list" var="v">
      <tr>
      <td><s:property value="#v.roleName"/></td>
      <td><s:property value="#v.roleCreateDate"/></td>
      <td><s:property value="#v.roleRe"/></td>
      <td><s:a href="updateRole.action?id=<s:property value="#v.id"/>">编辑</s:a>|<s:a href="deleteRole.action?id=<s:property value="#v.id"/>">删除</s:a></td>
      </tr>
      </s:iterator>  
      

  5.   

    一般初学者在使用<s:iterator>遍历list集合的时候会出现往往会得到集合但是取不到集合里面的值,主要的原因是自己理解上的失误,集合迭代的时候,所获得的对象已经不是集合,而是集合里面所放的对象,所以取值是直接用对象的属相取值就好了,不需要加上对象名.属性名取值,比如list集合中放个user对象,对象里面有uname属相 正确的是这样:
             <s:iterator value="list">
                <s:properties value="uname"/>
             </s:iterator>
    或者
             <s:iterator value="list" var="list">
                <s:properties value="list.uname"/>
             </s:iterator>
    而不是
                 <s:iterator value="list">
                    <s:properties value="user.uname"/>
                 </s:iterator>
    或者
                 <s:iterator value="list" var="list">
                     <s:properties value="list.user.uname"/>
                 </s:iterator>
    另外在提一下此标签的两个属性:
      status :如果设置此参数,一个IteratorStatus的实例将会压入每个遍历的堆栈
      id:用来标识元素的id。在UI和表单中为HTML的id属性 
      
      

  6.   

    public String listRole()
    {
    list = roleService.listAll();
    if(list != null && list.size() > 0)
    {
    return "list";    //这个应该改成 return SUCCESS;
    }
    return ERROR;
    }
    你的第一个返回值应该是SUCCESS,不应该是list,你应该是SSH架构的吧!这样你的SUCCESS是返回到Struts.xml文件里与Result 的name属性的值进行匹配的,然后Jsp页面才能获取的list集合!
      

  7.   

    1.先看看ContextMap中有没有你这个list对象,如果没有你肯定啥都取不到
    2.- - 我个人感觉这个list或许需要初始化 new ArrayList() 这样一下
    3.看看你struts2的配置文件,其中对应的action的result的返回值是不是list,如果不是你这里就跳转不过去
    4.如果以上没问题,那就<s:debug>一下,在页面上看看valuestack中对象的内容楼上有人也说了,iterato这个标签遍历的时候,是把其中的对象压入栈顶,而不是这个集合在栈顶
    对象在栈顶的时候,你就可以直接取其中的属性- - 暂时我就能想到这些问题.......