我有这样的特殊课程:
public class testClass {
private String name;
private List<ListData> listDatas;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<ListData> getListData() {
return listData;
}
public void setListData(List<ListData> listData) {
this.listData = listData;
}
}这个类来自@RestController端,@RequestBody用JSON设置所有数据。我也在这里使用JPA。
在@Service层上,我希望将testClass数据用于JasperFillManager。
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, ???);填充expect的3参数期望JRDataSource类型的数据。但我的目标不是JRDataSource。我怎样才能把它投给JRDataSource。İ有什么办法吗?
发布于 2016-03-31 19:28:39
您不会将对象转换为JRDataSource,因为它们在形式上并不相互关联。相反,您需要编写访问数据的JRDataSource实现。就像这样:
public class MyJRDataSource implements JRDataSource {
private final testClass data;
public MyJRDataSource(testClass data) {
this.data = data;
}
@Override
Object getFieldValue(JRField field) {
// get value of field here
}
@Override
boolean next() {
// move to next row of data
}
}发布于 2016-04-01 07:57:42
因为ListData (List<ListData>)是您的一个类,所以没有必要重新发明轮子,创建您自己的数据源。你可以直接用JRBeanCollectionDataSource
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, new JRBeanCollectionDataSource(getListData()));您将自动获取jrxml中相对于ListData中的getter和setter的字段。
https://stackoverflow.com/questions/36341762
复制相似问题