@JosueSantos escreveu:
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 moreTESTE NO JRXML:
Mensagens: 1
Participantes: 1