ArrayList al = new ArrayList();
al.add("1");
al.add("2");
al.add("3");
String[] ss;
request.setAttribute("attend_states",al);
ss = (String[])request.getAttribute("attend_states");
System.out.println(ss.length);

解决方案 »

  1.   

    先转成String[]后在放request里面不行吗?
      

  2.   

    用HashMap替换request结果是正确的。代码如下:
    ArrayList al = new ArrayList();
    al.add("1");
    al.add("2");
    al.add("33");
    String[] ss;
    HashMap hm = new HashMap();
    hm.put("attend_states", al.toArray(new String[] {}));
    ss = (String[]) hm.get("attend_states");
    System.out.println(ss.length);
    System.out.println(ss[2]);1.不知道楼主出现的异常是什么?request肯定支持对象传输,
    2.作一下测试。
      request.setAttribute("attend_states",al.toArray(new String[]{}));
      ss = (String[])request.getAttribute("attend_states");
      修改成
      request.setAttribute("attend_states",al);
      ArrayList arTemp = (ArrayList)request.getAttribute("attend_states");
      ss = arTemp .toArray(new String[]{});
     
      看一下结果如何?
      

  3.   

    这样呢?(楼上说的)
    request.setAttribute("attend_states",(String[])al.toArray());
    然后:
    ss=(String[])request.getAttribute("attend_states");我想错误原因应该是这么造成的:
    arrayList.toArray(Object[] array);
    api说是该方法发挥的Object[]的rtti型别是array的型别,
    那么这里就是把Object[] 存在Object中,然后试图进行(String[])Object的强制转换了!
      

  4.   

    奇怪啊,今天一样的代码就可以执行了,在同一action中的不同地方.郁闷,郁闷啊!!!!!!!
      

  5.   

    一种方法,将arrayList转化成以某个特殊字符隔开的字符串,然后传给request,在通过字符串的spit功能将它以这个特殊的字符串分割自动形成String[].