Alguém pode me ajudar? Relatório em Java é um saco! Não estou conseguindo acessar a chave estrangeira para colocar o nome da cidade no Relatório de Instituição.
Classe Intituicao:
@ManyToOne
@JoinColumn(name="cidade", nullable = false)
private Cidade cidade= new Cidade();
Classe Cidade:
//Chave estrangeira composição
@ManyToOne
@JoinColumn(name="estado", nullable = false)
private Estado estado = new Estado();
Chamando o metodo gerar relatório no xhtml Intituição:
h:commandButton value="Exportar PDF" actionListener="#{instituicaoBean.exportarPDF}"
METODO:
public void exportarPDF(ActionEvent actionEvent, Instituicao instituicao, Cidade cidade) throws JRException, IOException{
InstituicaoDAO instituicaoDAO = new InstituicaoDAO();
instituicaos = instituicaoDAO.listar();
File jasper = new File(FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/instituicao.jasper"));
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("instituicao", instituicao.getRazaosocial());
parametros.put("instituicao", instituicao.getCnpj());
parametros.put("instituicao", instituicao.getDataCadastro());
parametros.put("instituicao", instituicao.getEndereco());
parametros.put("instituicao", instituicao.getComplemento());
parametros.put("instituicao", instituicao.getTelefone());
parametros.put("instituicao", instituicao.getFundador());
parametros.put("instituicao", instituicao.getCep());
parametros.put("instituicao", instituicao.getEmail());
parametros.put("instituicao", instituicao.getSite());
parametros.put("cidade", instituicao.getCidade().getNome());
JasperPrint jasperPrint = JasperFillManager.fillReport(jasper.getPath(), parametros, new JRBeanCollectionDataSource(this.instituicaos));
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.addHeader("Content-disposition","attachment; filename=Instituicao.pdf");
ServletOutputStream stream = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, stream);
stream.flush();
stream.close();
FacesContext.getCurrentInstance().responseComplete();
}
Compilo JRXML e não apresenta erro, porem na hora de rodar a aplicação da o erro:
FATAL: /pages/instituicao.xhtml @30,84 actionListener="#{instituicaoBean.verPDF}": net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: nome. javax.faces.FacesException: /pages/instituicao.xhtml @30,84 actionListener="#{instituicaoBean.verPDF}": net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: nome. at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:78) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) Caused by: javax.el.ELException: /pages/instituicao.xhtml @30,84 actionListener="#{instituicaoBean.verPDF}": net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: nome. at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814) at javax.faces.component.UICommand.broadcast(UICommand.java:300) at javax.faces.component.UIData.broadcast(UIData.java:1108) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) … 27 more Caused by: net.sf.jasperreports.engine.JRException: Error retrieving field value from bean: nome. at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getBeanProperty(JRAbstractBeanDataSource.java:134) at net.sf.jasperreports.engine.data.JRAbstractBeanDataSource.getFieldValue(JRAbstractBeanDataSource.java:99) at net.sf.jasperreports.engine.data.JRBeanCollectionDataSource.getFieldValue(JRBeanCollectionDataSource.java:104) at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:1373) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1274) at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1250) at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1056) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:113) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:580) at net.sf.jasperreports.engine.fill.BaseReportFiller.fill(BaseReportFiller.java:414) at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:121) at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:583) at net.sf.jasperreports.engine.JasperRunManager.runToPdf(JasperRunManager.java:455) at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:870) at br.pro.sispro.migreja.bean.InstituicaoBean.verPDF(InstituicaoBean.java:304) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.el.parser.AstValue.invoke(AstValue.java:247) at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) … 35 more Caused by: java.lang.NoSuchMethodException: Unknown property ‘nome’ on class 'class br.pro.sispro.migreja.domain.Instituicao’ 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:114) … 56 more
TESTE NO JRXML:
