[RESOLVIDO]JSF + IReport ERRo:Error retrieving field value from bean :

Olá,

estou tentando executar um relatoria na minha aplicação mais só gera o seguinte erro:

Error retrieving field value from bean : 

Classe de relatorio

public class Relatorios {

	// Campos de parametro do report
	private Integer p_codpedido;
	private String p_ordenador;
	private String p_gestor;
	private String p_agente;
	

	public void imprimirRelatorioPam(ActionEvent event,IDAO dao) throws Exception {
		
		List<Pedido> list = dao.listarTudo(Pedido.class);	
		
		// parametros
		Map parametros = new HashMap();		
		parametros.put("P_CODPEDIDO", new Integer(10));
		parametros.put("P_ORDENADOR", new String("Eurico Jorge de Lima Cel Int"));
		parametros.put("P_GESTOR", new String("Fernando Cardoso Vidal Júnior - Maj Int"));
		parametros.put("P_AGENTE", new String("Jorge Luiz R.Alvarenga T.Cel Int"));	

		try {
			
			JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
			
			JasperPrint impressao = JasperFillManager.fillReport(getPath() + "/pam.jasper",parametros,ds);

			if (impressao != null) {
				byte[] bytes = JasperExportManager.exportReportToPdf(impressao);
				byte[] arquivo = bytes;

				download(arquivo,"pamTeste");
			}

		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

	}
	
	//Devolve o path padrao dos reports
	public static String getPath() {   
		ServletContext servletContext = (ServletContext) getFacesContext()
		.getExternalContext().getContext();
	    return servletContext.getRealPath("WEB-INF/report/") + "/";   
	}
	
	//Devolve o response para o download
	public static HttpServletResponse getServletResponse() {   
	    return (HttpServletResponse)getFacesContext().getExternalContext().getResponse();   
	}   
	  
	//obtem o faces context da aplicacao
	public static FacesContext getFacesContext() {   
	    return FacesContext.getCurrentInstance();   
	} 
	
	//metodo que executa o download
	public static void download(byte[] arquivo, String nome) throws Exception {   
	    HttpServletResponse response = getServletResponse();   
	    response.setContentType("application/pdf");   
	    response.setContentLength(arquivo.length);   
	    response.addHeader("Content-Disposition", "attachment; filename=" + "\"" + nome + "\"");   
	    ServletOutputStream outputStream = response.getOutputStream();   
	    outputStream.write(arquivo, 0, arquivo.length);   
	    outputStream.flush();   
	    outputStream.close();   
	    getFacesContext().responseComplete();           
	} 

}

Managed Bean

public class RelatorioPamMB {

	private Relatorios pam = new Relatorios();

	// Dependencia injetada
	private IDAO dao;

	public Relatorios getPam() {
		return pam;
	}

	public IDAO getDao() {
		return dao;
	}

	public void setDao(IDAO dao) {
		this.dao = dao;
	}

	public void imprimir(ActionEvent event) {
		try {
			this.pam.imprimirRelatorioPam(event, getDao());
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

Os nomes dos atributos da bean estar igual ao do ireport

ficarei no aguardo

Abrass

Tem como mandar a exceção um pouco mais completa?

Cara é serio a exceção é essa! nao da um stacktrace, ele so fala isso Error retrieving field value from bean :
e nao executa o PDF. :frowning:

Tenta o seguinte


JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list,false);

Blz! Executou agora.

but…

executou em branco, o arquivo .PDF esta em branco não apareceu nem os campos staticos! :frowning:

Qual versão ireport vc esta usando? em portugues ou ingles?

Cara eu to testando em duas a 3.0.0 em portugues e a 3.5.2 em portugues tambem
as duas esta ocorrendo o mesmo caso.

No 3.0 selecione o relatorio e vá em Editar -> Propriedades do relatorio, na tela de propriedade clique na aba "Mais…" e no combo "Quando sem informações" selecione a opção "Todas as seções, nenhum detalhe".

Isto vai fazer com que seu relatorio mostre as outras bandas quando não tiver informações;

Pelo menos agora não vai ficar em branco…heheh :smiley:

Fala leandrolw,

cara consegui + ou -, tipo o problema é na minha query do Ireport para gerar os campos do desing!Nessa query

eu coloco varios inner join, e a lista so vem os dados da tabela pedido, ai ele gera erro!Se vc souber

algum mecanismo que ao enviar minha List ele entenda os dados do inner ficarei grato.

Abraços

Galera resolvido!!

Eu tirei o envio de lista, e so usei a query do banco passando parametro pelo Map.

Obrigado ai leandro.

Abraço

Estou passando pelo mesmo problema… será que você poderia postar o código pra eu ver

Pelo que entendi a solução dele foi usar a query dentro do relatório. No meu caso, não adianta fazer isso. Até poderia fazer, mas seria “errado”. Gostaria de resolver este problema… Não usar outras solução =\

Então…
consegui resolver o problema do relatório e gerar o pdf

postei a solução que encontrei nesse post:

Espero que ajude

Abraços!