在JasperReports + iReport制作报表过程中,发生如下错误:
net.sf.jasperreports.engine.JRException: Error retrieving field value from bean :
解决方案如下(已验证,本人发生在错误3):
错误1:检查你的JavaBean,在JavaBean中补充各属性需要的Set/Get方法(1必须有);
错误2:检查你的数据源,在iReport中点击“Report Datasources”图标,新建一个数据源,点击New,选择“JavaBeans set datasource”,在Name文本框中输入“JavaBeans”,单击“Save”按钮,然后点击“Close”即可(2在我这无影响)。
错误3:检查JavaBean中各字段是否与iReport报表中设计的一致(包括各字段对应的类型和总个数)。假设你的JavaBean中有user字段,表示“用户”,这里我们用字符串表示,在JavaBean中:
private String user;
在iReport表格设计中,右键点击“Fields”图标 —>“添加 Field(A)”,将新建的field1重命名为“user”,点击“确定”即可,其他步骤省略...最终部分结果在XML中类型如下所示:
<field name="user" class="java.lang.String"/>
... ...
<textFieldExpression><![CDATA[$F{user}]]></textFieldExpression>
以上摘抄:http://blog.csdn.net/zhouyuanlinli/article/details/8506745
我的错误原因是,ireport报表中存在多余一个字段,在实体类里不存在。