问题是这样的  代码不在手边 我就写伪码吧 ireport以JavaBean作为数据源
首先是主bean_A
bean_A{
      private  String aa;
      private  String bb;
      private  List<bean_B> b_list;
      //-----set/get 省略
}bean_b{
     private  String cc;
     private  String dd;
     //-----set/get 省略
}我在XML文件里配置数据源为List<bean_A> 类型的一个list,将其内部的b_list 传给子报表,因为b_list在主报表里是个field值  所以用
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{b_list})
子报表以bean_b获得field字段
结果报下面错误:Servlet.service() for servlet default threw exception
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.apache.struts2.views.jasperreports.ValueStackDataSource@11d3ec8' with class 'org.apache.struts2.views.jasperreports.ValueStackDataSource' to class 'java.util.List'
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:340)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:632)