Java 通过spring显示多表jasper报告
我是贾斯珀报告的新手。 我成功地用jasper报告显示了一个表。 但是如何通过Spring控制器在jasper报告中显示多个表呢 我没有使用数据库作为数据源,只是使用ArrayList中的普通POJO 这是我的Spring配置Java 通过spring显示多表jasper报告,java,spring,arraylist,controller,jasper-reports,Java,Spring,Arraylist,Controller,Jasper Reports,我是贾斯珀报告的新手。 我成功地用jasper报告显示了一个表。 但是如何通过Spring控制器在jasper报告中显示多个表呢 我没有使用数据库作为数据源,只是使用ArrayList中的普通POJO 这是我的Spring配置 @Configuration public class JasperReportConfig { @Bean public JasperReportsViewResolver getJasperReportsViewResolver() {
@Configuration
public class JasperReportConfig {
@Bean
public JasperReportsViewResolver getJasperReportsViewResolver() {
JasperReportsViewResolver resolver = new JasperReportsViewResolver();
resolver.setPrefix("classpath:/reports/");
resolver.setSuffix(".jrxml");
resolver.setViewNames("report_*");
resolver.setViewClass(JasperReportsMultiFormatView.class);
resolver.setOrder(0);
return resolver;
}
}
这是我的控制器
@Controller
public class MyReportController {
@RequestMapping("/thereport")
public ModelAndView showReport(ModelAndView mv) {
// the first list to be the first table
List<Person> theFirstList = new ArrayList<>();
theFirstList.add(new Person("Joni", "Jakarta"));
theFirstList.add(new Person("Michel", "Singapore"));
mv.addObject("dataSource", theFirstList);
// the second list to be the second table
List<Person> theSecondList = new ArrayList<>();
theSecondList.add(new Person("Annie", "Thailand"));
theSecondList.add(new Person("Barry", "India"));
mv.addObject("dataSource", theSecondList);
mv.addObject("format", "pdf");
mv.setViewName("report_address");
return mv;
}
}
如何定义不同的数据源,以便在报告中使用两个(或更多)列表?或者我可以使用一个包含多个列表的数据源?我认为最好使用这样的子数据集: 在控制器中:
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(distinctSymbolRespCounts);
parameterMap.put("DS1", beanColDataSource);
在jrxml中:
<parameter name="DS1" class="net.sf.jasperreports.engine.data.JRBeanCollectionDataSource"/>
定义表时,请使用此数据集:
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="Blank">
<datasetRun subDataset="datasourceTable" uuid="95223e22-f4cd-4749-9f65-6fa4b068a27b">
<datasetParameter name="REPORT_DATA_SOURCE">
<datasetParameterExpression><![CDATA[$P{DS1}]]></datasetParameterExpression>
</datasetParameter>
</datasetRun>
...
</jr:table>
...
<jr:table xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" whenNoDataType="Blank">
<datasetRun subDataset="datasourceTable" uuid="95223e22-f4cd-4749-9f65-6fa4b068a27b">
<datasetParameter name="REPORT_DATA_SOURCE">
<datasetParameterExpression><![CDATA[$P{DS1}]]></datasetParameterExpression>
</datasetParameter>
</datasetRun>
...
</jr:table>