2010-01-18 60 views
0

我正在研究基于struts的应用程序。我想创建一个Jasper报告,其中包含问题和对象的响应。显然,我有含部分属性Paper对象的列表和每个Paper对象内部具有的Questions列表。每个Question都有一个回应列表。使用iReport工具为JasperReports创建子报告

我可以使用Paper对象创建主报表,显示不同的零件名称。但我想要显示与每个问题相关的部分和响应相关的问题。

我的模型类将是:

// Paper 
public class Paper { 

    public String partName; 
    public List<Question> questions; 
} 

// Question 
public class Question { 

    public String question; 
    public List<Answer> answers; 
} 

// Answer 
public class Answer { 

    public String answer; 
} 

我知道我必须在iReport使用报表。当我这样做,编译失败的数据源表达new JRBeanCollectionDataSource($F{questions})

+0

回应应该在这里帮助那些在将来遇到类似问题的人。你说编译失败了,你能给出与失败相关的任何错误信息吗?你已经给了你的班级结构,但没有任何报告信息。你在哪里使用这种表达方式? – 2010-01-20 19:51:58

回答

1

新net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($ F {问题}提供)

0

完美......... ...另外请导入类在主报告

<import value="net.sf.jasperreports.engine.*"/> 
<import value="net.sf.jasperreports.engine.data.*"/> 

和报表标签将有

<subreport isUsingCache="true"> 
<reportElement x="0" y="39" width="555" height="276"/> 
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{addresses})]]></dataSourceExpression> 
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "report1_subreport5.jasper"]]></subreportExpression> 
</subreport> 

而且报表只是看起来像普通的字段。注意:子报表不会进行组合,并且会报错,它无法在bean中找到该字段。