首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何处理从JasperReport中的bean : XXX异常检索字段值的错误

如何处理从JasperReport中的bean : XXX异常检索字段值的错误
EN

Stack Overflow用户
提问于 2015-01-12 11:42:26
回答 2查看 831关注 0票数 0

我的问题很简单:

如何在中处理此JasperReports异常?

代码语言:javascript
运行
复制
net.sf.jasperreports.engine.JRException: 
Error retrieving field value from bean : XXX

我为什么想要这个?

如果用户忘记在jrxml中使用/拼写错误的字段名,我不希望执行停止,而是希望替换一些值,比如表达式中的“无字段发现”或“无数据”。

我已经试过了

代码语言:javascript
运行
复制
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
jasperReport.setProperty(JasperReport .PROPERTY_WHEN_NO_DATA_TYPE, "Yoooooo");

什么也没发生

EN

Stack Overflow用户

发布于 2015-01-13 06:12:28

我拿到了,伙计。

您必须为DataSource创建自己的类,它扩展了JRDataSource的实现

而且您必须重写方法getFieldValue

所以不用再纠缠了..。我给你带来了..。解决方案

代码语言:javascript
运行
复制
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() + "]");
        }

    }

}

你们生成的代码看起来会是:

代码语言:javascript
运行
复制
JRDataSource dataSource = new CustomDataSource((Collection<?>)data/*your DTO*/);
 JasperPrint jasperPrint = JasperFillManager.fillReport(report, null, dataSource);

(就是这样:)

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27901161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档