我的问题很简单:
如何在中处理此JasperReports异常?
net.sf.jasperreports.engine.JRException:
Error retrieving field value from bean : XXX
我为什么想要这个?
如果用户忘记在jrxml中使用/拼写错误的字段名,我不希望执行停止,而是希望替换一些值,比如表达式中的“无字段发现”或“无数据”。
我已经试过了
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperReport.setProperty(JasperReport .PROPERTY_WHEN_NO_DATA_TYPE, "Yoooooo");
什么也没发生
发布于 2015-01-13 06:12:28
我拿到了,伙计。
您必须为DataSource创建自己的类,它扩展了JRDataSource的实现
而且您必须重写方法getFieldValue
所以不用再纠缠了..。我给你带来了..。解决方案
public class CustomDataSource extends JRBeanCollectionDataSource {
public CustomDataSource(Collection<?> beanCollection) {
super(beanCollection);
}
@Override
public Object getFieldValue(JRField field) throws JRException {
try {
Object returnVal = super.getFieldValue(field);
return returnVal;
} catch (JRException e) {
// You can check for the type of exception like NoSuchMethod or BlaBlaBlackSheep
return new String("[No Feild :" + field.getName() + "]");
}
}
}
你们生成的代码看起来会是:
JRDataSource dataSource = new CustomDataSource((Collection<?>)data/*your DTO*/);
JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, dataSource);
(就是这样:)
https://stackoverflow.com/questions/27901161
复制相似问题