Galera gostaria de saber o que tem de errado com o código, já postei outra coisa, agora quero tirar essa dúvida.
Eu tenho uma página com uma comboBox, ela trás do Banco de dados ( Data : Código : Titulo : etc. ) Eu quero pegar o Código e jogar para o request.getParameter e nisso gerar um PDF através desse código, isso é, jogando ele como parâmetro no iReport.
Alguém poderia me ajudar e verificar o que tem de errado no código ?
[color=red][size=18]
JSP
[/color] [/size]
<%@page import="java.awt.Button"%>
<%@ page import=" br.com.sein.dao.AnalysisDAO, br.com.sein.bean.PrintAnalysisBean, java.text.SimpleDateFormat, java.sql.Date " %>
<%@ page import="java.util.*, java.sql.SQLException" %>
<%@ page import="java.sql.*" %>
<%@ page import="org.postgresql.Driver" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>CETEM - Centro Tecnologico Mineral</title>
</head>
<body>
<%
String url = "jdbc:postgresql://172.16.0.160:5432/sca"; //Informe a porta de conexão. Assim você garante todas as informações de conexão.
String username = "postgres";
String password = "";
Class.forName("org.postgresql.Driver");//Não precisa chamar o método newInstance, basta assim como coloquei.
Connection conn = DriverManager.getConnection( url, username, password );
%>
<br />
<table align="center">
<tr>
<td align="center"><a style="color:#FFD700"> Sistema para Controle de Análises Minerais</a></td>
</tr>
<tr align="center">
<td><a style="color:black">Obs: No caso de TRAVAMENTO durante o processamento pressione a tecla 'SHIFT' <br />
simultaneamente com o botão 'ATUALIZAR'</a>
</td>
</tr>
</table>
<br />
[color=red]<form action="GeraRelatorioPdf" method="post">[/color]
<table align="center" style="background-color:#27408B;">
<tr>
<td align="center"><h4><a style="color:#FFD700">Boletins / Impressão de Boletins de Análise</a></h4>
<input type="submit" value="Gerar Relatório" name="bottonSca" style="font-size: 05 pt; font-family: arial" onClick="this.form.action=''"/>
</td>
</tr>
<tr>
<td><h5><a style="color:white;"><b>Boletins:</b> (Data de Geração, Código do Boletim, Código da SA, Sigla do Projeto e Nome do Cliente) *</a></h5>
<select name="ImprimirAnalise">
<%
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy HH:mm");
//formato.format(new Date(System.currentTimeMillis()));
AnalysisDAO dao = new AnalysisDAO();
List<PrintAnalysisBean> bean = dao.getComboBox();
for(PrintAnalysisBean analysisBean: bean){
%>
[color=red]<option value="<%=analysisBean.getCodeBulletin() %>" id="id" >[/color]
<%
out.print(formato.format(new Date(analysisBean.getDateGeneration().getTime())) + " : " +
analysisBean.getCodeBulletin() + " : " +
analysisBean.getCodeSa() + " : " +
analysisBean.getAcronym() + " : " +
analysisBean.getNameClient());
%>
</option>
<%
}
%>
</select>
</td>
</tr>
</table>
</form>
</body>
</html>
[color=red][size=18]
Arquivo para Gerar o PDF
Isso eu peguei aqui no GUJ e tentei alterar para minha necessidade.
[/color] [/size]
package br.com.sein.relatorio;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
public class GerarRelatorio extends HttpServlet{
private final static long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
String nomeDoRelatorio = (String)request.getAttribute("Sca-version4.jasper");
@SuppressWarnings("rawtypes")
List lista = (List)request.getAttribute("lista"); [color=red] Para que serve isso ? Eu peguei na net e tinha essa lista ai[/color]
@SuppressWarnings("unchecked")
[color=red]HashMap<String, String> parametros = (HashMap<String, String>)request.getAttribute("ImprimirAnalise");[/color]
ServletContext contex = this.getServletContext();
String nomeDoArquivoCopilado = contex.getRealPath(nomeDoRelatorio);
File arquivo = new File(nomeDoArquivoCopilado);
try{
JasperReport relatorioCompilado = (JasperReport) JRLoader.loadObject(arquivo);
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(lista);
JasperPrint relatorioFinal = JasperFillManager.fillReport(relatorioCompilado, parametros, ds);
response.setContentType("application/pdf;charset=UTF-8");
//Adequado para se enviar dados binários para o browser.
ServletOutputStream out = response.getOutputStream();
JasperExportManager.exportReportToPdfStream(relatorioFinal,out);
out.flush();
}catch(JRException e){
response.setContentType("text/plain");
PrintWriter printWriter = response.getWriter();
e.printStackTrace(printWriter);
throw new ServletException(e);
}
}
}
[color=red][size=18]
DAO - a única coisa que ele faz por enquanto é buscar as informações para jogar na ComboBox
[/color] [/size]
package br.com.sein.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.com.sein.bean.PrintAnalysisBean;
import br.com.sein.jdbc.ConnectionFactory;
public class AnalysisDAO {
private Connection connection;
/*
* Realiza a construção para conectar ao banco
*/
public AnalysisDAO() throws SQLException, ClassNotFoundException{
this.connection = new ConnectionFactory().getConnection();
}
/**
*
* Lista todas as análise e seta para seta na combo.
*
* @return
*/
public List<PrintAnalysisBean> getComboBox(){
try{
StringBuffer sql = new StringBuffer();
sql.append("SELECT Sa_Dba, Sa_Bol, Sa_Con, Con_Sigla, Cli_Nome FROM Sa,Contratos,Clientes ");
sql.append("WHERE (SUBSTR(Sa_Con,1,4)='2011' OR SUBSTR(Sa_Con,1,4)='2012') AND");
sql.append(" (SUBSTR(Sa_Con,1,8)=Con_Codigo) AND Sa_Sit=4 AND Con_Resp=Cli_Logon ");
sql.append("ORDER BY Sa_Dba DESC,Sa_Bol;");
List<PrintAnalysisBean> print = new ArrayList<PrintAnalysisBean>();
PreparedStatement stmt = this.connection.prepareStatement(sql.toString());
ResultSet rs = stmt.executeQuery();
while(rs.next()){
PrintAnalysisBean bean = new PrintAnalysisBean();
bean.setDateGeneration(rs.getTimestamp("Sa_Dba"));
bean.setCodeBulletin(rs.getString("sa_bol")); //Codigo do Boletin
bean.setCodeSa(rs.getString("sa_con")); //Codigo SA
bean.setAcronym(rs.getString("con_Sigla")); //Sigla
bean.setNameClient(rs.getString("cli_nome"));// nome do cliente
print.add(bean);
}
rs.close();
stmt.close();
return print;
}catch(SQLException e){
throw new RuntimeException(e);
}
}
}