日期:2014-05-20  浏览次数:20795 次

求助!jsp页面迭代ArrayList问题!
主要问题概述:我的开发环境是struts1,现在我在我的action里面 把我需要在jsp页面遍历的集合request.getSession().setAttribute("list", al);了,然后我在jsp页面 ArrayList al=(ArrayList)request.getSession().getAttribute("list"); 奇怪的是,System.out.println(al);可以在控制台打印出我的表中的记录,但是System.out.println(al.size());就会抛出异常,在网上找了关于这个问题的资料,很多人都遇到了,但是没有明确的说明原因,今天我也遇到了,已经困扰我一天了,求大侠解救!

PS:我做了许多测试,当我声明一个int类型的ArrayList,结果就可以打印出来,没有任何问题:
Java code
ArrayList tt=new ArrayList();
        tt.add("a");
        tt.add("b");
        tt.add("c");
        System.out.println("测试:"+tt);
        request.setAttribute("tt", tt);



下面是我的主要代码,我可以保证代码没有什么问题,只是jsp页面取不到request的值,很费解!
Java code
        SysUser user = (SysUser) request.getSession().getAttribute(Globals.USER_KEY);
        String sfs=user.getSfs();
        String orgno=user.getOrgno();
        String username=user.getUsername();
        String condition =null;
        Connection conn = DBUtil.getConnection();
        
        if (orgno.equals("21000002")&&(sfs.equals("") || (sfs==null)) ) {
            //当前user是监狱
            System.out.println("1");
            condition ="where to_sifasuo='"+username+"'and sfs is not null";
            
        }else if (orgno.equals("21000003")&& (sfs.endsWith("司法所")||sfs.equals("农委"))) {
            //当前user是司法所
            condition ="where (to_jianyu='"+username+"'or to_jianyu is null )and sfs is null";
        }
        
        ArrayList al=new ArrayList();
        Statement stmt=null;
        ResultSet rs=null;
        Tb_newTaskVo voo = null;
        String sql = "SELECT RWBT , YWLX , LYDW , LRY , BLSJ , URL FROM Tb_NewTask"+" "+condition;
        System.out.println(sql);
        //System.out.println(condition);
        try {
            stmt=conn.createStatement();
            //System.out.println("1");
            rs=stmt.executeQuery(sql);
            //System.out.println("2");
            while(rs.next()){
                 voo = new Tb_newTaskVo();
                 voo.setrwbt(rs.getString(1));
                 voo.setywlx(rs.getString(2));
                 voo.setlydw(rs.getString(3));
                 voo.setlry(rs.getString(4));
                 voo.setblsj(rs.getDate(5));
                 voo.seturl(rs.getString(6));
                 al.add(voo);
            }
            
        } catch (Exception e) {
            conn.rollback();
            e.printStackTrace(System.out);
            Pub.writeXmlErrorMessage(response, this.handleError(e));
        }
        finally{
            try {
                rs.close();
                stmt.close();
                if (conn != null) {
                    conn.close();
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace(System.out);
            }
        }
        
        request.getSession().setAttribute("list", al);
        //request.setAttribute("list", al);
        
        ArrayList tt=new ArrayList();
        tt.add("a");
        tt.add("b");
        tt.add("c");
        System.out.println("测试:"+tt);
        request.setAttribute("tt", tt);
        
        request.getRequestDispatcher("/jsp/framework/newblueTemplate/task.jsp").forward(request, response);
        //System.out.flush();
        //System.out.close();
        //System.out.println(al);
        System.out.println("sql条件语句:"+condition+"**********************");
        
        return null;
        


jsp页面的java代码:
Java code