JasperReport Table组件使用JavaBean作为数据源
首先
Bean中要有对应的List
public class CheckFormBean {
private String id;
private String company;
...
private List<TableBean> tableBeanList;
private List<FixCountTableBean> fixCountTableBeans;
...
}
public class TableBean {
private String type;
private String width;
private String height;
...
}
public class FixCountTableBean {
private String type;
private String width;
private String structureType;
...
工厂类
public class BeanFactory {
public static ArrayList<CheckFormBean> getBeanCollection(){
ArrayList<CheckFormBean> checkFormBeans=new ArrayList<>();
ArrayList<TableBean> tableBeans=new ArrayList<>();
ArrayList<FixCountTableBean> fixCountTableBeans=new ArrayList<>();
CheckFormBean checkFormBean=new CheckFormBean("13","11","13","41","15",....);
tableBeans.add(new TableBean("挖洞","20","20","400","100","50","500"));
...
fixCountTableBeans.add(new FixCountTableBean("修路",....));
...
checkFormBean.setFixCountTableBeans(fixCountTableBeans);
checkFormBean.setTableBeanList(tableBeans);
checkFormBeans.add(checkFormBean);
return checkFormBeans;
}
}
在模版中
添加Table组件
并且新建数据源
在Source页面下找到DatasetRun标签修改为
<datasetRun subDataset="Dataset2" uuid="6f80b566-fa9a-45ca-98db-a640206367c7">
<datasetParameter name="p1">
<datasetParameterExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource( $F{tableBeanList})]]></datasetParameterExpression>
</datasetParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource( $F{tableBeanList})]]></dataSourceExpression>
</datasetRun>
其中Dataset2为Table数据源