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