Erro com JasperReport [Resolvido]

8 respostas
anderson.bonavides

Pessoal, alguem pode me dizer o que tem de errado nesta linha?

JasperPrint print = JasperFillManager.fillReport(relatorioJasper, null, ds);
Segue o metodo completo:
public String geraRelatorio() {
		String jasper = "/br/com/projetobase/report/relatorioDeUsuarios.jasper";
		List<Usuario> usuarios = listaUsuarios();
		InputStream relatorioJasper = getClass().getResourceAsStream(jasper);
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(usuarios);
		try {
			JasperPrint print = JasperFillManager.fillReport(relatorioJasper, null, ds);
			System.out.println("\n\n\n Jasper Print: "+ print +"\n\n\n");
			
			//JasperExportManager.exportReportToPdf(jasperPrint)
			preenchePdf(print);
		} catch (JRException e) {
			e.printStackTrace();
		}
		return saida;
	}

Segue o erro:

net.sf.jasperreports.engine.JRException: Error retrieving field value from bean : usuario_id_usuario at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProp erty(JRAbstractBeanDataSource.java:127) at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldVal ue(JRAbstractBeanDataSource.java:100) at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldV alue(JRBeanCollectionDataSource.java:104) at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDat aset.java:787) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.jav a:751) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java: 1422) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVertic alFiller.java:111) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java: 879) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java: 801) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89 ) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa nager.java:601) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillMa nager.java:582) at br.com.projetobase.report.RelatorioUsuario.geraRelatorio(RelatorioUsu ario.java:47) at br.com.projetobase.bean.UsuarioBean.relatorioGeral(UsuarioBean.java:3 35) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces sorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(AstValue.java:187) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)

at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.ja
va:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(Met
hodBindingMethodExpressionAdapter.java:77)
at org.apache.myfaces.application.ActionListenerImpl.processAction(Actio
nListenerImpl.java:57)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:3
21)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java
:296)
at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:25
3)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.j
ava:466)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicat
ionPhase.java:97)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:266)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:132)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487
)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1093)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFil
ter.java:390)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(Servlet
Handler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3
60)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav
a:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1
81)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:7
26)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)

at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand
lerCollection.java:206)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.
java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1
52)
at org.mortbay.jetty.Server.handle(Server.java:324)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:50
5)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnectio
n.java:843)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)
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.ja
va:395)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.j
ava:488)
Caused by: java.lang.NoSuchMethodException: Unknown property 'usuario_id_usuario
'
at org.apache.commons.beanutils.PropertyUtils.getSimpleProperty(Property
Utils.java:1175)
at org.apache.commons.beanutils.PropertyUtils.getNestedProperty(Property
Utils.java:772)
at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.
java:801)
at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProp
erty(JRAbstractBeanDataSource.java:115)
... 54 more

Grato!

8 Respostas

willricardo

Como esta seu relatorio?!!

Na sua tabela existe a coluna usuario_id_usuario?!

tive muitos problemas com isto, colocar um campo field que não existe na minha tabela!!!

Mas segue um exemplo do modo que utilizo:

JasperFillManager.fillReportToFile("rel.jasper", "rel.jrprint", null, getConexao().getConnection());
anderson.bonavides

Não, na minha tabela não existe esta propriedade. Eu não sei onde o jasper foi arrumar esta propriedade pra mim.

As propriedades que quero puchar são as mesmas do meu pacote de dominio:

id
nome
telefone
bairro
nomeLogin

Todas estão com o mesmo nome das propriedades do banco, com exceção do id que no banco se chama:
id_usuario.

Como ja tenho uma conexão com o hibernate não existe a necessidade de passar a conexão do banco. No exemplo que tenho ele usa um DataSource.

F

Voce tem que validar se no JRXML , esta mapeado com o mesmo nome do seu Bean,
pois quando voce usa o JRBeanCollectionDataSource voce esta passando o seu Bean para o Relatorio.

Entao se no seu BEAN tiver id, nome,telefone,bairro,nomeLogin no JRXML tem que esta
da mesma forma com os mesmo nomes exatos.

Creio que seja isso.

flw

anderson.bonavides

Obrigado Felipe, como posso ver se estou validando corretamente?

Grato!

anderson.bonavides

Desculpem, só corrigindo. É que já olhei e não existe a propriedade na minha tabela usuario_id_usuario.
Os mesmo estão sendo colocados na mesma forma que se encontra no bean.

gfao

Ai Anderson, tenta verificar no mapeamento mesmo do JRXML, pq quando tive esse mesmo problema que vc, o erro estava la, tenta colocar id_usuario ao inves de somente id. Assim fica tudo igual e creio que solucionara seu problema.

Abraços!

anderson.bonavides

Ola gfao, existia um relatório antigo em outro diretório, então ele estava buscando este, quando percebi eu deletei e redirecionei para o local correto tudo funcionou.

Agradeço pela força.

Grato!

gfao

Que bom que conseguiu resolver ai.
Qualquer coisa estamos aqui!

Abraços! :slight_smile:

Criado 8 de maio de 2009
Ultima resposta 11 de mai. de 2009
Respostas 8
Participantes 4