Alguem pode me mostrar como gerar um relatorio pela web (jsp)
eu ja tenho ele desenhado,
eu queria o seguinte, eu tenho uma lista com N resultados, que vem do banco,
eu quero joga essa lista pro parametro do metodo, pra gerar o relatorio…
eu fazia isso muito em jsf, trazia uma lista com os valores, e passava pra parametro pro metodo, ai gerava,
mais eu não to conseguindo fazer isso em jsp…
Esse é o codigo que eu uso para JSF, eu passo uma lista como parametro…
mas pra jsp isso nao funciona, tem muito tempo q nao mecho com jsp puro,
acho que tem que ser doPost… não sei…
é isso
public void generateReport()throws ClassNotFoundException, IOException, JRException {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
InputStream reportStream = context.getExternalContext().getResourceAsStream("/jasper/anac.jasper");
ServletOutputStream servletOutputStream = response.getOutputStream();
try {
JRDataSource novo = new JRBeanCollectionDataSource(lista); //lista com os valores
JasperRunManager.runReportToPdfStream(reportStream,servletOutputStream, new HashMap(), novo);
} catch (PersistenceException e) {
e.printStackTrace();
}
response.setContentType("application/pdf");
context.responseComplete();
servletOutputStream.flush();
servletOutputStream.close();
}
OO fera. segue ae um exemplo com o Ireport. ñ sei se é isso que vc precisa mas talvez pode ajudar… falou . se quiser tenho o modelo completo de como fazer
package relatorio;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import persistencia.Despejo;
import util.JSFUtil;
public class DespejoRelatorio {
// Dados do relatório
private List<Despejo> dados;
// Métodos getters
public List<Despejo> getDados() {
return dados;
}
// Métodos setters
public void setDados(List<Despejo> dados) {
this.dados = dados;
}
// Método que gera os relatórios
@SuppressWarnings("unchecked")
public void gerarRelatorio() throws Exception {
// Caminho do aplicativo
String path = JSFUtil.getRealPath();
// Caminho do arquivo .jrxml
path += "\\WEB-INF\\classes\\relatorio\\nomedoSeuRelatorioDoIreport.jrxml";
// Relatório
JasperReport report = JasperCompileManager.compileReport(path);
// Parâmetros
HashMap parametros = new HashMap();
// Dados do relatório
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(dados);
// Conversão do relatório para bytes
byte[] bytes = JasperRunManager.runReportToPdf(report, parametros, ds);
// Captura a resposta
HttpServletResponse resp = JSFUtil.getResponde();
// Configura os parâmetros para envio do arquivo
// Tipo do arquivo
resp.setContentType("Application/pdf");
// Configuração do anexo
resp.setHeader("Content-disposition",
"attachment;filename=despejo.pdf");
// Tamanho do arquivo
resp.setContentLength(bytes.length);
// Gravaçao dos bytes na resposta
ServletOutputStream saida = resp.getOutputStream();
saida.write(bytes, 0, bytes.length);
// Efetua a transferência do arquivo
JSFUtil.responseComplete();
}
}