Bom dia amigos...
sei que esse assunto esta bem batido. mas infeslimente nao estou conseguindo resolver sozinhu... e nem com o google... peço encarecidamente a ajuda dos senhores.
entao, mudei de sistema operacial para o ubuntu, peguei todas as minhas coisas (apps. relatorios), baixei o netbeans. o novo ireport_nb, tudo funcionando legal... quando tive a necessidade de editar um relatorio... editei ele... compilei o .jasper e ele nao imprime mais o conteudo do Detail.
OBS.: minha fonte de dados vem sempre da aplicação , usando o JRBeanCollectionDataSource
Sera que esqueci de setar alguma coisa no antes da compilaçao do jasper no ireport ?
está meu codigo certo ?
public String haveOneImgFornePdf(){
String path = new UtilFaces().getServletContext().getRealPath("/WEB-INF/classes/Reports")+"/";
Fornecedor fornecedor = fornecedorBean.getFornecedor();
List<Fornecedor> list = new ArrayList<Fornecedor>();
list.add(fornecedor);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(list);
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("SUBREPORT_DIR", path);
String arquivo = path+"report1_forne.jasper";
File reportFile = new File(arquivo);
byte[] bytes = null;
try{
bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, ds);
}catch(JRException e){
e.printStackTrace();
}
writeBytes(bytes,true,fornecedor.getFornecedor());
return "";
}
private void writeBytes(byte[] bytes,boolean isDownload,String fileName){
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
if (bytes != null && bytes.length > 0) {
ServletOutputStream ouputStream = null;
try {
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
if(isDownload)
response.setHeader("Content-disposition", "attachment;filename="+fileName+".pdf");
ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
facesContext.responseComplete();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Obrigado Gente. abs
