4 java jasper-reports javabeans
我有Java bean,字段为activeRecord
private Boolean activeRecord;
@Override
public Boolean isActiveRecord() {
return activeRecord;
}
@Override
public void setActiveRecord(Boolean activeRecord) {
this.activeRecord = activeRecord;
}
Run Code Online (Sandbox Code Playgroud)
当我将其作为Jasper Report数据源发送到List时
List<Branch> dataList = new BranchLogic().selectAll();
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList);
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
net.sf.jasperreports.engine.JRException:从bean:activeRecord检索字段值时出错.....引起:java.lang.NoSuchMethodException:属性'activeRecord'在类'class com.tawaak.app.data.domain.model.branch.Branch'中没有getter方法
为什么Jasper不承认这isActiveRecord是一个getter方法?
前缀is...可用于返回基元的方法boolean.但是,您的字段activeRecord是类型Boolean,它是一个对象(包装类型boolean),对于您始终需要使用的对象get....
从JavaBeans规范,8.3.2:
另外,对于
boolean属性,我们允许getter方法匹配模式:Run Code Online (Sandbox Code Playgroud)public boolean is<PropertyName>();
is<PropertyName>可以提供该方法来代替get<PropertyName>方法,或者除了get<PropertyName>方法之外还可以提供该方法.
因此,您有两种可能的解决方法:
activeRecorda boolean并保持吸气isActiveRecord().如果activeRecord不能,这将是首选的方法null.Boolean,但重命名方法isActiveRecord()来getActiveRecord().您需要确保调用者null正确处理.| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |