<logic:iterate id="userinfo" name="list" scope="request" type="valueobject.Userinfo">
  <tr>
    <td><bean:write name="userinfo" property="user_name"></bean:write></td>
    <td><bean:write name="userinfo" property="user_phone"></bean:write></td>
    <td><bean:write name="userinfo" property="user_address"></bean:write></td>
    <td><bean:write name="userinfo" property="user_age"></bean:write></td>
    <td><bean:write name="userinfo" property="user_sex"></bean:write></td>
  </tr>
</logic:iterate>list中存的是Object ,所以,你把各个对象取出来之后要造型成为你的valueobject.Userinfo.
这样才可以。
如果你没有type这个属性,则默认是Object类型的,那么,就是没有get和set方法呀。
如果你的type属性不正确,则出现ClassCastException.应该就是这样,但是,至少这里不对,先改了,看还有没有其他问题。

解决方案 »

  1.   

    加了 type="valueobject.UserInfo" 就出现 ClassCastException,
    但是我在vomanager里面,就是把找出来的结果造型为UserInfo对象,放在List里,然后返回的就是这个list,而且
    vomanager的部分代码:
    ...
    public List findAll()
       {
         System.out.println("start UserInfoManager.findAll()...");
         List list =new ArrayList();
         sqlselect = "Select * from userinfo";
         try {
            //创建prepareStatement执行对象
            pstmt = conn.prepareStatement(sqlselect);        ResultSet rs = pstmt.executeQuery();
            while(rs.next()){
              UserInfo userinfo = new UserInfo();
              userinfo.setId(rs.getInt("id"));
              userinfo.setUser_name(rs.getString("user_name"));
              userinfo.setUser_phone(rs.getString("user_phone"));
              userinfo.setUser_address(rs.getString("user_address"));
              userinfo.setUser_age(rs.getString("user_age"));
              userinfo.setUser_sex(rs.getString("user_sex"));
              list.add(userinfo);
            }
            System.out.println("end UserInfoManager.findAll()...");
            rs.close();
            pstmt.close();
          }
          catch (Exception ex) {
            System.out.println("Manager err findAll()...");
            ex.printStackTrace();
          }
          return list;
       }
    }
    ...
      

  2.   

    把你的代码,给全一点,当你得到list以后,应该把它放在request范围内的,或者session,servletContext范围内。比如:request.setAttribute("list",list);  //第一个参数是标识,和也面中的对应。第二个
                                              //是你的对象。你的程序中有没有这样的代码。
    贴出来。
      

  3.   

    今天也在学习<logic:iterate>标签,用了<logic:iterate id="xx" name="list" type="yy.yybean">,编译的时候出现Cannot create iterator for this collection。就是找不到错误,看了上面楼上的,才发现我用的request.setAttribute("list","list")。晕!不晓得list上面的冒号什么时候被加上去的。大家也得注意啊,千万不要犯我一样的错误。hehe
      

  4.   

    action里面有
    request.setAttribute("list",list);
    没有这句,在不用sessonbean调用的时候,页面怎么回正常呢?
    我就是通过 sessionbean掉的时候有问题~