4 servlets jasper-reports javabeans
我在Servlet中使用Jasper Report。Team Bean看起来像
private int tid;
private String title;
private List<Member> members;
//getter and setter
Run Code Online (Sandbox Code Playgroud)
成员豆看起来像
private int id;
private String name;
//getter and setter
Run Code Online (Sandbox Code Playgroud)
在报告Servlet中,
List<Team> teams = service.getTeams();
Map parameters = new HashMap();
JasperPrint jasperPrint = null;
jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JRBeanCollectionDataSource(teams));
Run Code Online (Sandbox Code Playgroud)
在新的JRBeanCollectionDataSource(teams)中添加团队时,如何在Jasper报表中显示它?因为它在列表中包含列表。
我是否需要子报表来解决此问题?
还是可以在没有子报表的情况下解决此问题?
有两种方法可以完成此操作:
您确实可以通过使用子报表来解决此问题。为此,您需要添加一个子报表并将其数据源表达式设置为new JRBeanCollectionDataSource($F{members})。这样,您的Memberbean 的字段就可以作为子报表中的字段了(例如$F{name})。
您还可以通过使用列表组件来解决此问题而无需子报告。这可以从iReport的调色板中获得,也可以复制以下示例。这需要添加到报告的明细栏中。
列表组件具有与报表一样的数据源表达式,应将其设置为new JRBeanCollectionDataSource($F{members}),并且具有listContents类似于子报表明细带的元素;其中的元素将对数据源中的每个成员重复一次。
列表组件在您的报告中需要一个子数据集,但是iReport会自动添加该子数据集,或者您可以轻松添加一个空的子数据集:<subDataset name="dataset1"/>。
<componentElement>
<reportElement x="0" y="0" width="555" height="20"/>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd">
<datasetRun subDataset="dataset1">
<dataSourceExpression><![CDATA[new JRBeanCollectionDataSource($F{members})]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="20" width="555">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
</jr:listContents>
</jr:list>
</componentElement>
Run Code Online (Sandbox Code Playgroud)
有关列表组件的更多信息,请参见:http : //jasperreports.sourceforge.net/sample.reference/list/index.html
| 归档时间: |
|
| 查看次数: |
4866 次 |
| 最近记录: |