Relatório vindo em branco

Olá pessoal,

Não consigo entender o por quê do meu relatório estar vindo tudo totalmente branco (sem cabeçalho, sem rodapé, sem nada) quando eu
mando gerar pelo sistema, no entanto no iReport ele funciona perfeitamente. Já atualizei as bibliotecas para a versão do meu iReport 4.1.1, mas nada.

O relatório não faz consulta sql, mas contém 5 parametros (nome, cpf, rg, numero e marca). O usuario insere esses valores na view e eles são impressos no relatório.

Este é o HTML:

<form id="formulario" action="<c:url value="/servicos/declaracao"/>" method="GET">
  <fieldset>
    <legend>Declaração de Aceitação de Serviço de Requalificação de Cilindro</legend>
            <br />
            <table width="73%" border="0" align="center" cellpadding="8" cellspacing="2">

		    <td>
		      <td width="39%" height="30" align="right" class="tabelaFonte">Cliente </td>
		      <td height="30">
		        <input name="nome" type="text" size="20"  maxlength="10" /></td>
		      </td>

		    <td>
		      <td width="39%" height="30" align="right" class="tabelaFonte">CPF </td>
		      <td height="30">
		        <input name="cpf" type="text" size="20" maxlength="10" /></td>
		      </td>

                <td>
		      <td width="39%" height="30" align="right" class="tabelaFonte">RG </td>
		      <td height="30">
		        <input name="rg" type="text" size="20" maxlength="10" /></td>
		      </td>

                <td>
		      <td width="39%" height="30" align="right" class="tabelaFonte">Número do Cilindro </td>
		      <td height="30">
		        <input name="numero" type="text" size="20" maxlength="10" /></td>
		      </td>

                <td>
		      <td width="39%" height="30" align="right" class="tabelaFonte">Marca </td>
		      <td height="30">
		        <input name="marca" type="text" size="20" maxlength="10" /></td>
		      </td>

		    <td>
		      <td height="30">&nbsp;</td>
		      <td height="30"><button type="submit">Enviar</button></td>
		      </td>
  </table>
	  </fieldset>
  </form>

Este é o Controller:

@Get
    @Path("servicos/declaracao")
    public Download declaracao(String nome, String cpf, String rg, String numero, String marca)
            throws
        JRException,
        SQLException, ClassNotFoundException, Exception {
        System.out.println("########################################### CONTROLLER "+ nome + " ###########################################################################");
        InputStreamDownload relatorio = dao.declaracao(nome, cpf, rg, numero, marca);
        return relatorio;
}    

Este é o Dao:

public InputStreamDownload declaracao(String nome, String cpf, String rg, String numero, String marca)
      throws JRException, SQLException, ClassNotFoundException, Exception {
        System.out.println("########################################### DAO "+ nome + " ###########################################################################");
        InputStream file =  getClass().getClassLoader().
                           getResourceAsStream("/br/com/sigi/relatorio/declaracao.jasper");
        Map parametros = new HashMap();
        parametros.put("nome", nome);
        parametros.put("cpf", cpf);
        parametros.put("rg", rg);
        parametros.put("numero", numero);
        parametros.put("marca", marca);
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        JasperRunManager.runReportToPdfStream(file, os, parametros);
        InputStream document = new ByteArrayInputStream(os.toByteArray());
    return new InputStreamDownload(document, "application/pdf", "Declaracao.pdf", true, os.toByteArray().length);
    }

Tenho uma notícia pra você: pra que a banda detail apareça, é preciso que o relatório tenha um dataSource não nulo e não vazio.
Ou seja, vais ter que inventar uma coleção e enfiar lá, mesmo sem incluir estes dados no corpo do relatório.
Se seus dados não estiverem na banda detail, configure teu relatório, na aba propriedades, com a opção When No Data setada como “All Sections, No Detail”.
Abraço!

se vc salvar o relatório gerado pelo dao em um arquivo aparece algo?

leoramos, cara vc salvou a minha vida e a da minha familia inteira.
Estava a semanas tentando botar esse relatorio pra funcionar, e essa dica (all Sections, no Detail) me fez dar um progresso imenso,
no entanto aparece todas as bandas menos Detail.

Ja coloquei uma consulta qualquer no relatorio, mas nao coloquei o campo servicos_serv_pk_id no relatorio:

SELECT
     servicos."serv_pk_id" AS servicos_serv_pk_id
FROM
     "sigi"."servicos" servicos

e na Dao, nao estou conectando com o banco no metodo JasperRunManager.runReportToPdfStream.

Lucas, não aparecia nada, todo branco.
Mas agora ja aparece, so nao a banda de Detail.

Jon, só pra eu saber: resolveu, então? Fiquei em dúvida hehe
Se o datasource estiver vazio, o detail não vai aparecer.
Coloca um “select 1 as campo”, que seja, que aí ele já aparece.
Abraço!

leoramos, observe que no meu dao eu nao faço conexao com o banco no metodo abaixo:

JasperRunManager.runReportToPdfStream(file, os, parametros);

queria saber se eh preciso conectar-se com o banco.
As vezes da um erro de NullPointerException

Mas dá nullpointer em que ponto?
Se tu não precisar conectar com o banco, não conecte. Simplesmente coloque aquela query “fantasma” que comentei dentro do teu relatório. Aquela query executa sem conexão mesmo, não sei se tu chegou a notar.
Abraço!

da nullpointer exception quando mando gerar o relatorio pelo sistema em execução.
No iReport ele funciona perfeitamente.

Ja inseri aquela query no relatorio

Esta dando nullpointerexception so quando eu faço a conecao com o banco, mas nao estou mais conectando, no entanto
o relatorio so gera as outras bandas e a banda de Detail vem em branco, mesmo eu colocando a consulta “select 1 as campo;”

leoramos, cara consegui botar pra funcionar!!!
Agora esta gerando bonitinho pelo sistema. Aquela dica do All Sections, No Detail foi essencial,
mas tive que colocar o corpo do relatorio dentro de Title. É, eu sei que foi uma pequena gambiarra,
mas o importante é que funciona com a mesma eficiência.

Obrigado!