在JSP里面中
 String[] type_name = null;
 ArrayList list = TotTaskFuncs.TotLy(srtTime, endTime, iFrom, iIsImp, lTotal, type_name);
在TotTaskFuncs类TotLy方法中对type_name赋值后,在jsp取type_name还是为null,有没有什么解决办法?

解决方案 »

  1.   

    这个自然,type_name 都没有传递给request,这么可能取得到尼。
    这样处理:ArrayList tlist = new ArrayList(); tlist = listArrays.asList(type_name );
    requeest.setAbtrue("tlist",tlist );jsp页面:
    requeest.getAbtrue("tlist" );即可
    或者用c标签的for:each 编列展现
      

  2.   

    当然是null .Java是值传递.对于基本类型和String ,以及String[] .传递的是对象本身的拷贝.
    String[] type_name = null; 
    传递的是type_name指向对象的拷贝,这里其实是null.就暂且理解为两个null是不一样的吧.
    ArrayList list = TotTaskFuncs.TotLy(srtTime, endTime, iFrom, iIsImp, lTotal, type_name); 
    不论你的TotLy 方法写了什么,做出的改变都是针对 那个拷贝对象的改变.原来那个对象根本没有变化.
    运行一下代码看下
    public class TestString {
    public TestString(){

    }
    public static void change(String[] ss){
      ss = new String[5];   
      }
      public static void main(String[] abc){
      String[] ss = null;change(ss);
      System.out.println(ss);
      }
    }int和其他基本数据类型都是一样.如果是对象类型的话就不一样了.对这方面有兴趣的可以看下:
    http://blog.csdn.net/longtenggdf/archive/2009/09/28/4605728.aspx.
    这对java 值传递有详细的说明.
    解决办法只有通过返回值来实现了.要不就是不要用String[] ,用list<String>代替.