我的Java bean的字段为activeRecord
private Boolean activeRecord;
@Override
public Boolean isActiveRecord() {
return activeRecord;
}
@Override
public void setActiveRecord(Boolean activeRecord) {
this.activeRecord = activeRecord;
}
当我将列表作为Jasper报告数据源
发送时List<Branch> dataList = new BranchLogic().selectAll();
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList);
我收到错误消息
net.sf.jasperreports.engine.JRException:从bean:activeRecord检索字段值时出错。 .... 引起:java.lang.NoSuchMethodException:Property&#39; activeRecord&#39;在课堂上没有getter方法&#39; class com.tawaak.app.data.domain.model.branch.Branch&#39;
为什么Jasper不会将isActiveRecord
识别为getter方法?
答案 0 :(得分:5)
前缀is...
可用于返回基元boolean
的方法。但是,您的字段activeRecord
的类型为Boolean
,它是一个对象(包装类型为boolean
),对于您始终需要使用get...
的对象。
来自JavaBeans specification,8.3.2:
此外,对于
boolean
属性,我们允许getter方法匹配模式:public boolean is<PropertyName>();
可以提供此
is<PropertyName>
方法而不是get<PropertyName>
方法,或者除了get<PropertyName>
方法之外,还可以提供此方法。
因此,您有两种可能的解决方法:
activeRecord
成为boolean
并保持吸气器isActiveRecord()
。如果activeRecord
不能null
。Boolean
,但将您的方法isActiveRecord()
重命名为getActiveRecord()
。您需要确保来电者正确处理null
。