Relatório no Netbeans

7 respostas
ricardocomp

Olá pessoal,
alguém já gerou relatório pelo NetBeans?
Eu estou fazendo da seguinte forma:

<body>
            <h:form>
                <h:commandButton action="#{RelatorioBean.geraRelatorioPassandoListaDeObjetos}" value="Gerar Relatório"/>
            </h:form>
        </body>

faces-config:

<managed-bean>
        <managed-bean-name>RelatorioBean</managed-bean-name>
        <managed-bean-class>br.empresateste.testerelatorio.bean.RelatorioBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
        <from-view-id>/welcomeJSF.jsp</from-view-id>
        <navigation-case>
            <from-outcome>exibeRelatorio</from-outcome>
            <to-view-id>/welcomeJSF.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>

Mas toda hora que tento executar aparece a seguinte mensagem:

java.lang.NullPointerException
        at net.sf.jasperreports.engine.JRPropertiesMap.readObject(JRPropertiesMap.java:185)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1849)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1667)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
        ...

Será que alguém poderia me dar uma ajuda?

[]'s.

7 Respostas

Alexandre_Saudate

Parece que o problema é na hora de gerar o relatório em si… posta a linha de código que chama esse relatório.

[]´s

ricardocomp

Jóia asaudate?
Os métodos que eu estou usando são esses:

public String geraRelatorioPassandoListaDeObjetos() {
		saida = null;
		String jasper = getDiretorioReal("/jasper/professores_por_aluno_com_lista.jasper");
		Connection conexao = null;

		try {
			// Conex�o com o banco para o segundo relat�rio
			conexao = new Conexao().getConexao();
			// cria��o dos parametros
			Map<String, Object> map = new HashMap<String, Object>();
			// conex�o com o banco que ser� utilizada pelo subrelat�rio
			map.put("REPORT_CONNECTION", conexao);
			// pego o caminho do diret�rio onde se encontra o subrelat�rio
			map.put("SUBREPORT_DIR", getDiretorioReal("/jasper/") + "/");
			ArrayList<Aluno> alunos = getListaAlunos(conexao);

			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(alunos);
			/*
			 * Mando o jasper gerar o relat�rio. Nesse caso passo o map,
			 * j� que ele tem dois par�metros que ser�o utilizados
			 */
			JasperPrint print = JasperFillManager.fillReport(jasper, map, ds);
			// Gero o PDF
			preenchePdf(print);
		} catch (Exception e) {
			e.printStackTrace();
		}

		return "exibeRelatorio";
	}
private String getDiretorioReal(String diretorio) {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
		return session.getServletContext().getRealPath(diretorio);
	}

[]'s.

ricardocomp

Eu estou testando da seguinte forma:

public class RelatorioBeanTeste {
   public static void main(String[] args) {
        RelatorioBeanTeste testes = new RelatorioBeanTeste();
        testes.geraRelatorioPassandoListaDeObjetos();        
    }
    
    private void geraRelatorioPassandoListaDeObjetos(){
        RelatorioBean relatorio = new RelatorioBean();
        relatorio.geraRelatorioPassandoListaDeObjetos();
    }
}

Mas toda hora aparece a seguinte mensagem:

Exception in thread "main" java.lang.NullPointerException
        at br.empresateste.testerelatorio.bean.RelatorioBean.getDiretorioReal(RelatorioBean.java:196)
        at br.empresateste.testerelatorio.bean.RelatorioBean.geraRelatorioPassandoListaDeObjetos(RelatorioBean.java:115)
        at br.empresateste.testerelatorio.bean.RelatorioBeanTeste.geraRelatorioPassandoListaDeObjetos(RelatorioBeanTeste.java:36)
        at br.empresateste.testerelatorio.bean.RelatorioBeanTeste.main(RelatorioBeanTeste.java:31)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Será que tem como você asaudate ou alguém me dar uma ajuda?
Eu já estou disisperado aqui por que preciso terminar esse relatório antes de segunda-feira agora.

Por favor preciso de ajuda pessoal.

[]'s.

Alexandre_Saudate

O NullPointer aqui acontece porque, pelo que eu entendí, você está tentando testar com método main (logo, você não tem FacesContext).

[]´s

Alexandre_Saudate

Quanto à primeira exceção, me parece que algum parâmetro no map está faltando… tem como tirar um print screen da parte esquerda do iReport, mostrando os parâmetros que ele espera?

[]´s

ricardocomp

Jóia asaudate?
parte esquerda do ireport?
Não entendi direito.

Abraço.

ricardocomp

asaudate se não for pedir demais será que tem como você me enviar por e-mail: [email removido]
algum exemplo completo de geração de relatório pelo JSF? Fazendo o favor?

[]'s.

Criado 19 de fevereiro de 2010
Ultima resposta 19 de fev. de 2010
Respostas 7
Participantes 2