为什么我从建立的视图中取得的数据在页面用C:FOREACH显示多条数据都只有数据第一条?
比如 :
id    部门    该部门可发放的证件1    a部门     证件a
1    a部门     证件b
1    a部门     证件b
这个是a部门所能够发放的证件,语句在数据库中查询是正确的 ,但是用HQL取出的LIST 都是第一条,但是条数是正确的 

解决方案 »

  1.   

    id    部门    该部门可发放的证件 1    a部门    证件a 
    1    a部门    证件b 
    1    a部门    证件b 以上是数据库查询的结果.
    以下是页面显示的结果 
    1    a部门    证件a 
    1    a部门    证件a 
    1    a部门    证件a
      

  2.   

    打错了 
    id    部门    该部门可发放的证件 1    a部门    证件a 
    1    a部门    证件b 
    1    a部门    证件b 应该是:
     
    id    部门    该部门可发放的证件 1    a部门    证件a 
    1    a部门    证件b 
    1    a部门    证件c
      

  3.   

    <c:forEach items="${requestScope.depa_certbyid}"
    var="depa_certbyid">
    <tr style="height: 20;">
    <td align="center">
    <font size="2">${depa_certbyid.departname}</font>
    </td>
    <td align="center">
    <font size="2">${depa_certbyid.certificatetypename}</font>
    </td>
    <td align="center">
    <font size="2">${depa_certbyid.maxnum}</font>
    </td>
    </tr>
    </c:forEach><c:forEach>
    不是自动的啊 ?
      

  4.   

    我的意思是
    比如
    我查出的LIST一共有3条
    用iterator迭代出来的也是3条,但是显示的都是第一条的数据,为什么啊 
      

  5.   

    如果你是用struts的,你发你的action类过来看看,是不是你处理有问题
      

  6.   


    那说明你的 List 里面的数据都是相同的!你使用的 forEach 没有问题。建议你检查一下 List 的来源,以及 List 中的数据。
      

  7.   

    public ActionForward select(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
    String departid = request.getParameter("departid");
    // 返回所有的部门
    departinfoDAOInterface depdaoall = (departinfoDAOInterface) super
    .getService(Global.departinfo);
    List listall = depdaoall.listAll(departinfo.class);
    request.setAttribute("departinfo", listall);
    // 返回根据ID查出的该部门的名称
    departinfoDAOInterface depdao = (departinfoDAOInterface) super
    .getService(Global.departinfo);
    departinfo depn = (departinfo) depdao.getObjectById(departinfo.class,
    departid);
    request.setAttribute("departinfobyid", depn);
    // 根据传过来的ID取得所有该部门的证件
    depa_certDAOInterface dep_certdao = (depa_certDAOInterface) super
    .getService(Global.depa_cert);
    String hql = "from depa_cert  as dc where dc.departid='"+departid+"'";
    List list = (List) dep_certdao.getObjectsByHql(hql);
    Iterator<depa_cert>  it=list.iterator();
    while(it.hasNext())
    {
    depa_cert d_c=it.next();
    System.out.println(d_c.getCertificatetypename()+d_c.getDepartname()+d_c.getMaxnum());
    }
    System.out.println(list.size());
    request.setAttribute("depa_certbyid", list);
    //返回页面
    return mapping.findForward("success");
    }这个就是对应的ACTION方法。
    while(it.hasNext())
    {
    depa_cert d_c=it.next();
    System.out.println(d_c.getCertificatetypename()+d_c.getDepartname()+d_c.getMaxnum());
    }
    打印出来的也是一样,也就是说查出的LIST就是有问题 ,但是我直接把HQL放入数据库查询是正确的啊
      

  8.   

    <c:forEach items="${requestScope.depa_certbyid}" var="depa_certbyid"> 你的名字是不是取错了啊?
      

  9.   

    list 中的数据是一样的 ,数据库中比如有3条数据,list中也是3条,但是3条数据都是第一条的值
    我肯定HQL没有错误,因为我直接把HQL放入数据库查询是没有错的,
      

  10.   


    晕,你自己都说查出来的list已经有问题,那应该不是forEach的问题,你还是检查你的dao类
      

  11.   

    <c:forEach items="${requestScope.depa_certbyid}" var="depa_certbyid"> var 和 items 的名字不能一样!
      

  12.   

    List list = (List) dep_certdao.getObjectsByHql(hql); 把你这个 dep_certdao.getObjectsByHql(hql)方法的实现发来看看
      

  13.   

    DAO是封装的 ,和这个没关系,语句都在ACTION这 不一样也不行的 ....
      

  14.   

    public List getObjectsByHql(String hql) {
    return super.getHibernateTemplate().find(hql);
    }这个是DAO继承类的方法,和这个没关系的 
    dao接口没有写代码的