Faaala GUJ,
seguinte eu tenho o seguinte código no servlet:
package jasperPackage;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import beanPackage.beanPessoa;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
/**
* Servlet implementation class SvlRelatorioJasper
*/
public class SvlRelatorioJasper extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SvlRelatorioJasper() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
ServletOutputStream outputstream = response.getOutputStream();
String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/jasper") + System.getProperty("file.separator");
String caminhoRelJasper = realPath + "Lista.jasper";
InputStream relJasper = SvlRelatorioJasper.class.getResourceAsStream(caminhoRelJasper);
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("REPORT_LOCALE",request.getLocale());
List<beanPessoa> dados = new ArrayList<beanPessoa>();
for ( long i = 1; i <= 50; i++ ) {
beanPessoa c = new beanPessoa();
c.setStrNome( "Nome Cliente " + i );
dados.add( c );
}
JRDataSource teste = new JRBeanCollectionDataSource(dados);
try {
response.setHeader("Content-Disposition", "inline;filename=\"" + "Lista.pdf" + "\"");
response.setHeader("Cache-Control", "no-cache");
response.setContentType("application/pdf");
try {
JasperPrint impressao = JasperFillManager.fillReport(relJasper, parametros,teste);
JasperExportManager.exportReportToPdfStream(impressao, outputstream);
outputstream.close();
} catch (JRException e) {
// TODO: handle exception
System.out.println("Erro no jasperprint");
System.out.println(e.getMessage());
}
} catch (Exception e) {
// TODO: handle exception
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Só que quando vai-se abrir o pdf no IE o Pdf Reader dá erro, então abre-se a janela para download, no entanto o pdf está com 0 bytes e ao tentar abrir dá o mesmo erro.
No ireport eu desenhei o relatório da seguinte maneira:
NOME $F{strNome}.getStrNome()
E também tentei assim:
NOME $F{strNome}
No eclipse exportei a classe beanPessoa no formato jar, no ireport no classpath eu a adicionei e adicione o campo strNome.
Aonde estou cometendo erros ?