我有带有 activeRecord 字段的 Java bean

private Boolean activeRecord;

@Override
public Boolean isActiveRecord() {
    return activeRecord;
}

@Override
public void setActiveRecord(Boolean activeRecord) {
    this.activeRecord = activeRecord;
}

当我在 列表中将 作为 Jasper Report 数据源发送时
List<Branch> dataList = new BranchLogic().selectAll();
JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList);

我收到错误消息



为什么 Jasper 不将 isActiveRecord 识别为 getter 方法?

最佳答案

前缀 is... 可用于返回原始 boolean 的方法。但是,您的字段 activeRecordBoolean 类型,它是一个对象(boolean 的包装类型),对于对象,您总是需要使用 get...

来自 JavaBeans specification ,8.3.2:



因此,您有两种可能的解决方法:

  • 使您的 activeRecord 成为 boolean 并保留 getter isActiveRecord() 。如果 activeRecord 不能是 null ,这将是首选方法。
  • 将其保留为 Boolean ,但将您的方法 isActiveRecord() 重命名为 getActiveRecord() 。您需要确保调用者正确处理 null
  • 关于 boolean 字段的 Java Bean 规范,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39307379/

    10-14 03:50