这是我的批查询:
action层的是:
RuKu ruKu=(RuKu)form;
  String hpmc[]=request.getParameterValues("id");
 List list= ruKuDomain.getpl(hpmc);
 System.out.println("?????????12121212??????"+list);
 request.setAttribute("lists", list);这是dao层的。
public List getpl(String[] hpmc) {
       
Configuration cfg = new Configuration().configure() ;
SessionFactory factory = cfg.buildSessionFactory() ;
Session session = factory.openSession() ;
List list = new ArrayList() ;
for(int i=0;i<hpmc.length;i++){ 
System.out.println("-------find hpmc------------>" + hpmc[i]);
String hql="";

Query query=session.createQuery("from RuKu where hpmc='"+hpmc[i]+"'");
list=query.list();  
}
session.close() ; 
 return list ; }jsp页面的取值为:
<%
    
       List list1=(List)request.getAttribute("lists");
       System.out.println("~~~~~~~~~~~~~~~~~~"+list1);
       if(list1!=null)
       {
           for(int i=0;i<list1.size();i++)
           {
                 RuKu ruKu=(RuKu)list1.get(i);
               
            %>
               <tr class="COL_A">
          <td class="TABLE_COL" align="center">
            <input type="checkbox" name="id">
          </td>
          <td class="TABLE_COL">
            <%=ruKu.getHpmc()%>
          </td>
          <td class="TABLE_COL" align="center">
            <%=ruKu.getRksl()%>
          </td>
          <td class="TABLE_COL">
            <%=ruKu.getScph()%>
          </td>
          <td class="TABLE_COL" align="center">
            <%=ruKu.getZt()%>
          </td>
          <td class="TABLE_COL" align="center">
            <%=ruKu.getHwmc()%>
          </td>
          <td class="TABLE_COL" align="center">
            <a href="">修改</a> 
            <a href="">删除</a>
          </td>
        </tr>     
            <%
           }
       }
       else
       {
       
       }
    %>我选择两个进行查询的时候结果只显示最后一条的,第一个的不显示不了。我要怎么改jsp页面的代码
请高手指点指点 。 谢谢!!!

解决方案 »

  1.   

     RuKu ruKu把这个定义放在for循环外边试试
      

  2.   

    这样改改试试for(int i=0;i<hpmc.length;i++){  
    System.out.println("-------find hpmc------------>" + hpmc[i]);
    String hql="";Query query=session.createQuery("from RuKu where hpmc='"+hpmc[i]+"'");
    //list=query.list(); 
    改成
    list.addAll(query.list());  
    }
      

  3.   


    for(int i=0;i<hpmc.length;i++){  
    System.out.println("-------find hpmc------------>" + hpmc[i]);
    String hql="";Query query=session.createQuery("from RuKu where hpmc='"+hpmc[i]+"'");
    list=query.list();   
    }
    这里有问题,你循环N次,返回的都是最后一个list而已
      

  4.   

    问题关键所在就是你在循环里面list=query.list(); 
    第一次查询出的数据会封装在list里面
    第二次查询到的会把前一次的覆盖
    可以考虑用楼上的方法,或者再申明一个Map来保存每次list里面的数据
      

  5.   

    SessionFactory factory = cfg.buildSessionFactory() ;
    Session session = factory.openSession() ;
    List<RuKu> list = new ArrayList<RuKu>() ;
    for(int i=0;i<hpmc.length;i++){  
    System.out.println("-------find hpmc------------>" + hpmc[i]);
    String hql="";Query query=session.createQuery("from RuKu where hpmc='"+hpmc[i]+"'");
    //从这里开始改就OK了,因为你的以前的代码这里写的只能是将最后的一个条件查询的结果返回到list里现在改后能将所有的结果返回的list中。
    RuKu rk=query.list().get(0);  
    list.add(rk); 
    }
    session.close() ;  
    return list ;
      

  6.   

    public List getpl(String[] hpmc) {
           
    Configuration cfg = new Configuration().configure() ;
    SessionFactory factory = cfg.buildSessionFactory() ;
    Session session = factory.openSession() ;
    List list = new ArrayList() ;

    for(int i=0;i<hpmc.length;i++){ 

    String hql="";

    Query query=session.createQuery("from RuKu where hpmc='"+hpmc[i]+"'");
    List list2=query.list();  
    list.add(list2);
    }

    System.out.println("-------list list list------------>" + list);
    session.close() ; 
     return list ; }
    我改成这样了,打印出了是个【类1,类2】已经取出了是个集合
    我在jsp页面显示的是:
     List list1=(List)request.getAttribute("lists");
           System.out.println("xxxxxxxxxxx4545454xxxxxxxxxxxxxx"+list1);
           if(list1!=null)
           {
           
               for(int i=0;i<list1.size();i++)
               {
             
                  RuKu ruKu=(RuKu)list1.get(i);
                   
                %>
                   <tr class="COL_A">
              <td class="TABLE_COL" align="center">
                <input type="checkbox" name="id">
              </td>
              <td class="TABLE_COL">
                <%=ruKu.getHpmc()%>
              </td>
              <td class="TABLE_COL" align="center">
                <%=ruKu.getRksl()%>
              </td>
              <td class="TABLE_COL">
                <%=ruKu.getScph()%>
              </td>
              <td class="TABLE_COL" align="center">
                <%=ruKu.getZt()%>
              </td>
              <td class="TABLE_COL" align="center">
                <%=ruKu.getHwmc()%>
              </td>
              <td class="TABLE_COL" align="center">
                <a href="">修改</a> 
                <a href="">删除</a>
              </td>
            </tr>     
                <% 
               }
           }
           else
           {
          %>
          <tr>
            <td class="TABLE_COL" align="center" colspan="8"> 
              没有内容!!!
            </td>
           </tr>
            <%
           }
        %>
        
        但是错误:
    错误是:
    严重: Servlet.service() for servlet jsp threw exception
    java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.cbd.view.bean.RuKu
      

  7.   

    List list2 = (List)list1.get(i);for(int i = 0;i<list2.size();i++){
    RuKu ruKu=(RuKu)list2.get(i);
    }
      

  8.   


    List list2 = (List)list1.get(i);
    这个不在for循环里面吗?
    我的jsp取值是这样的:
    List list1=(List)request.getAttribute("lists");
           System.out.println("xxxxxxxxxxx4545454xxxxxxxxxxxxxx"+list1);
           if(list1!=null)
           {
           
               for(int i=0;i<list1.size();i++)
               { 
                  RuKu ruKu=(RuKu)list1.get(i); 
                }
    你给的  List list2 = (List)list1.get(i);我要怎样写:
    麻烦你给改一下 :非常感谢!!!
      

  9.   

    你现在是把2个list放到一个list里保存拿出来当然是先外面list拿出来转型,在把里面的list拿出来转型,在遍历里面的list的时候,里面拿出来的实例才是RuKu
      

  10.   

    道理是明白,可是不知道怎样写!!
    你帮我该一下,谢谢你了。List list1=(List)request.getAttribute("lists");
      System.out.println("xxxxxxxxxxx4545454xxxxxxxxxxxxxx"+list1);
      if(list1!=null)
      {
        
      for(int i=0;i<list1.size();i++)
      {  
      RuKu ruKu=(RuKu)list1.get(i);  
      }
      

  11.   

    list.add(list2);
    不是add
    是addAll(list2);方法用错了
      

  12.   

    list.add(list2);
    不是add
    是addAll(list2);方法用错了