Dando null quando tento gerar relatorio no ireport

0 respostas
ireportjavaspring
luizfonseca830
Erro gerado a baixo:

java.lang.NullPointerException

at br.com.romaninisistemas.controlerelatorio.RelatorioEstoqueControlador.geraRelatorio(RelatorioEstoqueControlador.java:32)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)

at java.lang.reflect.Method.invoke(Method.java:498)

Meu RelatorioEstoqueControlador

package br.com.romaninisistemas.controlerelatorio;

/**

  • Created by fonseca on 12/27/17.
    */
import br.com.romaninisistemas.entidade.Estoque;

import br.com.romaninisistemas.negocio.EstoqueFacade;

import br.com.romaninisistemas.util.FacesContextUtil;

import com.ocpsoft.pretty.faces.annotation.URLMapping;

import com.ocpsoft.pretty.faces.annotation.URLMappings;
import javax.faces.bean.ManagedBean;

import javax.faces.bean.ViewScoped;

import java.io.Serializable;

import java.math.BigDecimal;

import java.util.*;
@ViewScoped

@URLMappings(mappings = {

@URLMapping(id = relatorio-estoque, pattern = /admin/relatorio/estoque/, viewId = /faces/admin/relatorios/estoque/estoquerelatorio.xhtml)})

@ManagedBean

public class RelatorioEstoqueControlador extends AbstractReport {
public void geraRelatorio() {


    try {
        Estoque estoque = new Estoque();
        HashMap parametros = new HashMap();
        parametros.put("ID", estoque.getId());
        parametros.put("descrcao", estoque.getProduto().getDescricao());
        parametros.put("quantidade", estoque.getQuantidade());
        parametros.put("preco", estoque.getProduto().getPreco());



        super.gerarRelatorio("EstoqueRelatorio.jasper", parametros);

    } catch (Exception e) {
        e.printStackTrace();
        FacesContextUtil.addMessageError("Problema na hora de gerar relatório!");
    }
}

}
Meu AbstractReport

package br.com.romaninisistemas.controlerelatorio;

import br.com.romaninisistemas.negocio.EstoqueFacade;

import br.com.romaninisistemas.util.FacesContextUtil;

import net.sf.jasperreports.engine.JRException;

import net.sf.jasperreports.engine.JRExporterParameter;

import net.sf.jasperreports.engine.JasperFillManager;

import net.sf.jasperreports.engine.JasperPrint;

import net.sf.jasperreports.engine.export.JRPdfExporter;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.context.support.SpringBeanAutowiringSupport;
import javax.faces.bean.ManagedBean;

import javax.faces.bean.ViewScoped;

import javax.faces.context.FacesContext;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.servlet.ServletContext;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServletResponse;

import javax.sql.DataSource;

import <a href="http://java.io">java.io</a>.*;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.HashMap;

/**

  • Created by fonseca on 12/27/17.
    */
    @ManagedBean
    @ViewScoped
    public class AbstractReport implements Serializable{

    public AbstractReport() {
    
    injetarDependenciasSpring();
    
    }
    
    public final void injetarDependenciasSpring() {
    
    ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
    
    SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, servletContext);
    
    }
    
    private Connection recuperaConexaoJDBC() {
    
    Connection conexao = null;
    
    try {
    
    InitialContext ctx = new InitialContext();
    
    Context context = (Context) ctx.lookup(“java:/comp/env);
    
    DataSource ds = (DataSource) context.lookup(“romaniniJNDI”);
    
    conexao = ds.getConnection();
    
    return conexao;
    
    } catch (SQLException ex) {
         System.out.println("erro ...: " + ex.getMessage() + " -> " + ex.getCause());
         return conexao;
     } catch (Exception ex) {
         System.out.println("erro 1...: " + ex.getMessage() + " -> " + ex.getCause());
         return conexao;
     }
    

    }

    public void gerarRelatorio(String arquivoJasper, HashMap parametros) throws JRException, IOException {
    
    //recupera informação do faces
    
    FacesContext facesContext = FacesContext.getCurrentInstance();
    
    facesContext.responseComplete();
    
    ServletContext scontext = (ServletContext) facesContext.getExternalContext().getContext();
    
    //gera relatorio com as classes do jasper
    
    JasperPrint jasperPrint = JasperFillManager.fillReport(scontext.getRealPath("/WEB-INF/relatorios/" + arquivoJasper), parametros, recuperaConexaoJDBC());
    
    ByteArrayOutputStream dadosByte = new ByteArrayOutputStream();
    
    JRPdfExporter exporter = new JRPdfExporter();
    
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, dadosByte);
    
    exporter.exportReport();
    
    byte[] bytes = dadosByte.toByteArray();
    
    if (bytes != null && bytes.length > 0) {
    
    int recorte = arquivoJasper.indexOf(".");
    
    String nomePDF = arquivoJasper.substring(0, recorte);
    
    HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
    
    response.setContentType(application/pdf);
    
    response.setHeader(Content-disposition, inline; filename=" + nomePDF + “.pdf”");
    
    response.setContentLength(bytes.length);
    
    ServletOutputStream outputStream = response.getOutputStream();
    
    outputStream.write(bytes, 0, bytes.length);
    
    outputStream.flush();
    
    outputStream.close();
    
    }
    
    }
    
    public String getCaminhoImagem() {
    
    FacesContext facesContext = FacesContext.getCurrentInstance();
    
    String caminho = ((ServletContext) facesContext.getExternalContext().getContext()).getRealPath("/resources/images/16x16");
    
    caminho += /;
    
    return caminho;
    
    }
    
    public String getCaminho() {
    
    FacesContext facesContext = FacesContext.getCurrentInstance();
    
    String caminho = ((ServletContext) facesContext.getExternalContext().getContext()).getRealPath("/WEB-INF/relatorios");
    
    caminho += /;
    
    return caminho;
    
    }
    

    public void navegarEmbora() {

    FacesContextUtil.redirecionamentoInterno("/admin/home/");
    

    }

}

Criado 2 de janeiro de 2018
Respostas 0
Participantes 1