本帖最后由 tong19901018 于 2012-08-02 15:37:41 编辑

解决方案 »

  1.   

    ArrayList al=(ArrayList)request.getSession().getAttribute("list");
    这样子转换应该没错的啊。
    //request.getSession().setAttribute("list", al);
    有在此处加个断点调试一下吗?有真正set过来了没啊?
      

  2.   

    你的写法有问题,你放值的时候是request.getSession().setAttribute("list", al);
    ,取得时候应该用session取,ArrayList)request.getSession().getAttribute("list");
    这样写不好吧,还有,你 ArrayList al=new ArrayList();
    这样new了一个对象,在页面取得时候那样不转换取很危险的,应该写个保险的,比如这样写List<Tb_newTaskVo> list = new ArrayList<Tb_newTaskVo>();
    取值时这样迭代List<?> list = (List<?>)request.getAttribute("list");
    for(int i = 0; i < list.size(); i++){
    Tb_newTaskVo voo= (Tb_newTaskVo)list.get(i);
    这样写肯定不会出问题的
      

  3.   


    al的值可以打印在控制台,但是获取size 的时候显示null .
    我上午找了许多相类似的问题,都是request.getSession().setAttribute("list", al);或者request.setAttribute("list", al);在转换成ArrayList到jsp页面 的时候为null,但是查无明确解决之法!
      

  4.   

    前提是我放在request里面的,你用session的话可以这样session().getAttribute("list");
      

  5.   


    原来项目使用的是jdk1.4 ,不支持泛型,session.getAttribute("list");我也有试过,效果一样的呢
      

  6.   

    我现在怀疑我的逻辑哪里出了问题,就是jsp开始执行的那个onload事件那里,我每次执行一次action,都会请求转发一次,这样是否会request里面的值有影响?
      

  7.   

    取的时候不加getAttribute..直接在session里面取试试
      

  8.   

    我的值存在request.setAttribute("list", al);里面,request.getSession(ar)取不到值
      

  9.   

    每次都提交一次都request肯定是有影响的,request的生命周期就是一次请求,一次请求结束一个request就消亡了,楼主检查一下你的逻辑,如果传值的范围超过一个请求范围就不能放在request里面了,必须要放进session里面了
      

  10.   

    我测试有值啊:
    Action:ArrayList tt = new ArrayList();
    tt.add("a");
    tt.add("b");
    tt.add("c");
    System.out.println("测试:" + tt);
    request.getSession().setAttribute("tt", tt);
    request.getRequestDispatcher("../test.jsp")
    .forward(request, response);
    页面:test.jsp<%
        List al=(List)request.getSession().getAttribute("tt");
          if(al != null){
           out.print(al.size());
          }
         %>
    我估计你大概把Jsp中的属性范围方面出问题了。
    jsp中有9个内置对象,其中pageContext,request,session,application可以做一个好似容器的东西来用,向容器里放东西,使用setAttribute(String name,Object value),取得可用getAttribute(String name).其中:
    pageContext.setAttribute(String name,Object value)设置后,只可在当页面取得,无论采取什么样的跳转都不会取到值
    request.setAttribute(String name,Object value)设置后,用服务器端跳转的方式可取到值
    session.setAttribute(String name,Object value)设置后,无论采用什么样的跳转都可以取到值、
    application.setAttribute(String name,Object value)设置后,在整个的应用中都可以取得,不关闭服务器,容器的东西会一直存在.
      

  11.   


    大家早,我调用了两次action,每次都把查出来的值set进request里面,而且我自己测试int类型
            ArrayList tt=new ArrayList();
            tt.add("a");
            tt.add("b");
            tt.add("c");
            System.out.println("测试:"+tt);
            request.setAttribute("tt", tt);
    完全没有问题,网上找到其他人的问题和我的类似,都是转化为ArrayList 的时候,出现了错误,可以打印,但是值为null
      

  12.   


    大侠你好,ArrayList 放进去的值是string类型,这个我有测试,可以取到值,但是我里面的元素是一个表对象的实例,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);
                }
    这样取出的就为null了,我百度ArrayList al=(ArrayList)request.getAttribute("list");//类型转换错误,会发现很多和我类似的问题,就是取到的值为null,但是我看了他们的问题,都没有明确的解决回答!
      

  13.   

    如果你在控制台中可以看到输出结果,但在程序的接口子程序未收到该值,可能是因为你这个ArrayList输出的值是Object类型,你可以尝试将该ArrayList值导入进list中应该可以解决传参问题。【仅供参考】
      

  14.   

    解决了,
     ArrayList al=(ArrayList)request.getSession().getAttribute("list");天知道为什么好使了。。