Socorro, povo!

Galera, tudo blz?

Então, etou tentando gerar um relatório em um arquivo pdf e em seguida abri-lo dentro do browser onde está a aplicação. Só que não estou conseguindo. Olhando o logo do Tomcat, vi que sempre está surgindo a seguinte msg:

Cannot forward after response has been committed

Alguém, por favor, poderia me dizer ou me dar uma dica do que poderia estar causando isto?

Agradeço a ajuda!!!

Seu código fonte ajudaria muito nessas situações.

O Flin tah certo, mas:

1 - Não escreva nada na saída antes de fazer um forward (provavelmente eh isso)

2 - Coloque um título mais a ver com seu tópico

[]s

Certo, senhores!!!
Tem razão…
Mas a história é a seguinte.
Eu tenho, baseado em um select no banco, um resultSet que me resulta em um arquivo PDF. Depois disso, eu preciso mostrá-lo no browser, aí que está o meu problema… não consigo!!!
Aqui vai o código:
if (rset != null) {
while (rset.next()){
if (ctLinhas > 40){
documento.newPage();
ctLinhas = 6;
linha = “------------------------------------------------------” +
“-----------------------------------------------------------------------------”;
documento.add(new Paragraph(linha));
vetor.addElement(linha);
linha = rset.getString(“nome”)+
" (CNPJ: " +
rset.getString(“cnpjf”) +
") " +
"Data: " ;
documento.add(new Paragraph(linha));
vetor.addElement(linha);
linha = “Razao Analitico " + " " + " Da Loja: " + razaoAnaliticoForm.getCodigoUnidadeInicial()+” A " +
razaoAnaliticoForm.getCodigoUnidadeFinal() + " Periodo de " + razaoAnaliticoForm.getDataInicial() + " A " +
razaoAnaliticoForm.getDataFinal() + " Pagina: " + ctPagina++ ;
documento.add(new Paragraph(linha));
vetor.addElement(linha);
linha = "Da Conta: " + razaoAnaliticoForm.getContaContabilInicial() + " A " + razaoAnaliticoForm.getContaContabilFinal() +
" ";
documento.add(new Paragraph(linha));
vetor.addElement(linha);
linha = “------------------------------------------------------” +
“-----------------------------------------------------------------------------”;
documento.add(new Paragraph(linha));
linha = “- Data - Loja Lote * Docto * ------------------ Historico ----------- C.P. – Debito – – Credito – — Saldo —”;
documento.add(new Paragraph(linha));
vetor.addElement(linha);
}
if (!flagcontactb) {
linha = rset.getString(“cd_cta_ctb”) + " " + rset.getString(“cd_empr”)+ " " + rset.getString(“descr_conta”) ;
documento.add(new Paragraph(linha));
vetor.addElement(linha);
flagcontactb = true;
ctaCtbil = rset.getString(“cd_cta_ctb”);
}
if (rset.getString(“debito”).equals(“t”)){
vlrDebito = Double.parseDouble(rset.getString(“v_lancto”));
vlrCredito = 0.00;
totDebitoCta =+ vlrDebito;
totDebitoUnid =+ totDebitoCta;
} else if (rset.getString(“credito”).equals(“t”)){
vlrCredito = Double.parseDouble(rset.getString(“v_lancto”));
vlrDebito = 0.00;
totCreditoCta =+ vlrCredito;
totCreditoUnid =+ totCreditoCta;
}
linha = rset.getString(“dt_lancto”) + " “+ rset.getString(“cd_unid”)+” “+rset.getString(“n_lote”)+” "+ rset.getString(“n_docto”) +
" " + rset.getString(“descr_hist”) + " "+ rset.getString(“cd_red_crt_part”) + " "+vlrDebito + " “+ vlrCredito+” "+vlrSaldo;
documento.add(new Paragraph(linha));
vetor.addElement(linha);
ctLinhas++;
}

        }

// PdfProcessor processor = new PdfProcessor(vetor, baos);
// a partir daqui, não sei mais o que fazer!!! :shocked!:
documento.close();
if(!documento.equals(null)) {
response.setContentType(“application/pdf”);
response.setContentLength(baos.size());
response.sendRedirect(“razao.pdf”);
response.setHeader(“Content-disposition”, " inline; filename=razao.pdf");
ServletOutputStream sos = response.getOutputStream();
baos.writeTo(sos);
//send all bytes to the client.
sos.flush();
return mapping.findForward(“success”);
}
else {
response.setContentType(“text/html”);
return mapping.findForward(“failure”);
}
}

Obrigado, povo!!!

Olá

Quando você colocou Socorro fiquei com vontade de lhe passar o telefone do Resgate. Nâo o fiz porque não sei se aí no Paraná é o mesmo número que aqui.

Mas agora que você postou o código ficou mais fácil. Quer dizer, teria ficado mais fácil se o código fosse identado. Sugiro que leia rapidinho aqui.

Sobre seu problema, sugiro que dê uma estudada sobre o que faz realmente response.sendRedirect(“razao.pdf”); porque acho que isto aqui está meio deslocado.

[]s
Luca

LUca, estou aos poucos consertando… vamos tentar mais uma vez!!!
Tirei aquele response.Redirect, ok?

Mas o problema não é devido a esse comando.


            if (rset != null) {
               while (rset.next()){
                if (ctLinhas > 40){
                   documento.newPage();
                   ctLinhas = 6;
                   linha = "------------------------------------------------------" +
                        "-----------------------------------------------------------------------------";
                   documento.add(new Paragraph(linha));
                   vetor.addElement(linha);
                   linha = rset.getString("nome")+
                        "                                       (CNPJ: " +
                        rset.getString("cnpjf") + 
                        ")                           " +
                        "Data: " ;
                   documento.add(new Paragraph(linha));
                   vetor.addElement(linha);
                   linha = "Razao Analitico " + "                      " + " Da Loja: " + razaoAnaliticoForm.getCodigoUnidadeInicial()+" A " +
                         razaoAnaliticoForm.getCodigoUnidadeFinal() + " Periodo de " + razaoAnaliticoForm.getDataInicial() + " A " + 
                         razaoAnaliticoForm.getDataFinal() + "              Pagina: " + ctPagina++ ;
                   documento.add(new Paragraph(linha));
                   vetor.addElement(linha);
                   linha = "Da Conta: " + razaoAnaliticoForm.getContaContabilInicial() + "                                A " + razaoAnaliticoForm.getContaContabilFinal() +
                        "                       ";
                   documento.add(new Paragraph(linha));
                   vetor.addElement(linha);
                   linha = "------------------------------------------------------" +
                          "-----------------------------------------------------------------------------";
                   documento.add(new Paragraph(linha));
                   linha = "*- Data -* Loja    Lote  *  Docto  * *------------------ Historico -----------* C.P. *-- Debito --* *-- Credito --* *--- Saldo ---*";
                   documento.add(new Paragraph(linha));
                   vetor.addElement(linha);                   
              }
              if (!flagcontactb) {
                 linha = rset.getString("cd_cta_ctb") + "     " + rset.getString("cd_empr")+ "    " + rset.getString("descr_conta") ;
                 documento.add(new Paragraph(linha));
                 vetor.addElement(linha);                 
                 flagcontactb = true;
                 ctaCtbil = rset.getString("cd_cta_ctb");
              }
              if (rset.getString("debito").equals("t")){
                   vlrDebito = Double.parseDouble(rset.getString("v_lancto"));
                   vlrCredito = 0.00;
                   totDebitoCta =+ vlrDebito;
                   totDebitoUnid =+ totDebitoCta;
              } else if (rset.getString("credito").equals("t")){
                        vlrCredito = Double.parseDouble(rset.getString("v_lancto"));
                        vlrDebito = 0.00;
                        totCreditoCta  =+ vlrCredito;
                        totCreditoUnid =+ totCreditoCta;
                   }
               linha = rset.getString("dt_lancto") + "  "+ rset.getString("cd_unid")+" "+rset.getString("n_lote")+" "+ rset.getString("n_docto") +
                           "  " + rset.getString("descr_hist") + "  "+ rset.getString("cd_red_crt_part") + "  "+vlrDebito + "  "+ vlrCredito+"  "+vlrSaldo;
               documento.add(new Paragraph(linha));
               vetor.addElement(linha);               
               ctLinhas++;
               }

            }
            
//            PdfProcessor processor = new PdfProcessor(vetor, baos);
            
            documento.close();
            if(!documento.equals(null)) {
              response.setContentType("application/pdf");
              response.setContentLength(baos.size());
              response.setHeader("Content-disposition", " inline; filename=razao.pdf");
              ServletOutputStream sos = response.getOutputStream();
              baos.writeTo(sos);
             //send all bytes to the client.
              sos.flush();
              return mapping.findForward("success");
           } 
           else {
              response.setContentType("text/html");
              return mapping.findForward("failure");
          }                   
        }
        catch(DocumentException de){
            de.printStackTrace();
        }
        catch(IOException ioe){
            ioe.printStackTrace();
        }
        catch(SQLException e){
            e.printStackTrace();
        }
        finally{
            
        }
        return mapping.findForward("failure");

:oops:
Acho q agora melhorou, não?

Olá

Já havia tentado responder ontem à noite mas meu Firefox travou.

Melhorou MUITO!

Experimente usar
response.setContentType(“text/pdf”);
ao invés de
response.setContentType(“application/pdf”);

[]s
Luca

galera
o meu codigo está assim:

response.setContentType("text/html");
		response.setContentType("application/pdf");		
		response.setContentLength(bytesQuadro.length);			
		response.getOutputStream().write(bytesQuadro, 0, bytesQuadro.length);
		response.getOutputStream().flush();
		response.getOutputStream().close();

so que eu to com o problema,
o nome titulo da pagina quando abre o pdf no browser fica o action.do, como faço para alterar isso
ja tentei
response.setHeader(“title”,“oioi”);
response.addHeader(“title”,“oioi”);

e nada…

abraços