API向报表组传递“组”类型参数问题

首先我们来看一下需求,现在想通过api向报表中传递字符串数组类型的参数,当然,报表组中有对应的字符串组类型参数接收。

 

         我们来看一下具体实现过程,定义showGroup.jsp,主要内容如下:

Context cxt = new Context(); 

       String[] strArr1 = {“100723104537803200929443″,“100723103035803200929378″,“1007201109420704111439112″};

       String str = “100723104537803200929443,100723103035803200929378,1007201109420704111439112″;

       List<String> ll = new ArrayList<String>();

       ll.add(strArr1[0]);

       ll.add(strArr1[1]);

       ll.add(strArr1[2]);

       StringBuffer sb = new StringBuffer();

       for(int i=0;i<strArr1.length-1;i++){

           sb.append(strArr1[i]);

           sb.append(“,”);

       }

       sb.append(strArr1[strArr1.length-1]);

       

       String fileName = “C:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\reportmis2\\mis2\\reportcenter\\res\\test.rpg”;

       ReportGroup reportGroup = ReportGroup.read(fileName);

       ParamMetaData pmd = reportGroup.getParamMetaData();

       String param1 = “”;

       if(pmd != null){

              param1 = pmd.getParam(0).getParamName(); 

              out.println(参数0名称:+param1);

              out.print(“<br>”);

              //cxt.setParamValue(param1,strArr1);   //将字符串数组传给报表字符串组参数

              //cxt.setParamValue(param1,str);   //将逗号分隔的字符串传给报表字符串组参数

              cxt.setParamValue(param1,ll);   //ArrayList传给报表字符串组参数(正确的传递方式)

       }

       GroupEngine groupEngine=new GroupEngine(reportGroup, cxt);  //     IReport ireport=groupEngine.get(0);

       out.print(正在运算报表……”);

       out.print(“<br>”);

       try{

           ReportUtils.exportToExcel(“D:\\tt.xls”,ireport,false);

           out.println(“excel输出成功!);

       }catch(Throwable e){

           e.printStackTrace();

       }

       ReportGroup.write(“C:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\reportmis2\\mis2\\reportcenter\\res\\testOther.rpg”,reportGroup);

       out.println(报表组保存成功!);

 

请注意代码中的注释部分,我们做了三次传递,如下:

将字符串数组传给报表组字符串组参数

cxt.setParamValue(param1,strArr1);

访问showGroup.jsp报错

请注意红色方框中内容,我们发现报表对于该参数按照对象解析的,并未解析为字符串组,所以这样传递应该不可以。

将逗号分隔的字符串传给报表组字符串组参数

cxt.setParamValue(param1,str)

访问showGroup.jsp,后台打印信息

我们查看导出的Excel发现其内容是空的,也就是说报表并没有根据参数查到相关数据。

ArrayList传给报表组字符串组参数

cxt.setParamValue(param1,ll);

访问showGroup.jsp,我们来看一下后台信息

发现打印出来的参数为args,好像是我们需要的字符串数组。那来看看导出的Excel是否正常。

数据正常导出了,这说明将List参数传递给字符串组参数是正确的。

 

总结:

         报表中所有关于组类型的参数都是list类型的,我们传递的时候传递list进去便可以了。另外,我们也可以看出,组类型的参数在后台打印时会显示类似args这样的输出。

热门文章