错误检索字段 [英] Error retrieving field

查看:39
本文介绍了错误检索字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对JasperReports有问题.尝试从数据库下载数据时,出现此错误:

I have a problem with JasperReports. When attempting to download data from the database, I get this error:

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : mybean
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:123)
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:96)
    at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:100)
    at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:821)
    at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:785)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1482)
    at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:126)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
    at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:864)
    at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:84)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:624)
    at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:540)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: java.lang.NoSuchMethodException: Unknown property 'mybean' on class 'class com.mg.shared.ABC'
    at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1322)
    at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
    at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:846)
    at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
    at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:111)
    ... 31 more

对我来说,这个问题很奇怪,因为mybean位于ABC中.更重要的是,我的课ABC从其他DEF类获取一些数据,而mybean从DEF获得.当我尝试从ABC中显示mybean时,我发现了上面的错误,但是如果我从DEF中获取mybean,一切正常.

The problem is weird for me, becasue mybean is in ABC. What is more, my class ABC gets some data form other class DEF, and mybean is getting from DEF. When I am trying to display mybean from ABC, I recive the above error, but if I get mybean from DEF everything is ok.

推荐答案

问题是由您的字段以大写字母开头引起的:

The problem is caused by your fields starting with a capital letter:

private String AdresDysponenta;

应该是

private String adresDysponenta;

带小号.获取器和设置器的名称应保持不变.

with a small a. The names of the getters and setters should remain the same.

这是因为Jasper使用Apache Commons Beanutils(特别是PropertyUtils),而不喜欢您使用的实例字段以大写字母开头的事实.

This comes from the fact that Jasper uses Apache Commons Beanutils (PropertyUtils specifically), which doesn't like the fact that you're using an instance field with starts with a capital letter.

一般约定是,字段名称以小写字母开头,但在getter/setter中,它是大写字母:

The general convention is that field names start with a small letter, but in the getter/setter it is a capital:

private int foo;

public int getFoo() {
  return foo;
}

public void setFoo(int foo) {
  this.foo = foo;
}

这篇关于错误检索字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆