Impressão + Tomcat + JSP

5 respostas
R
caros,





eis o seguinte:


venho tentado imprimir um relatório gerado em jsp e consegui pensar em duas maneiras de montar a página de impressão:





1 - repetindo a pesquisa, montando a página novamente e sem as partes dinspensáveis, tal como cabeçalhalho. (funciona, mas pesquisa 2 vezes)


2 - inserindo o conteúdo da pesquisa em uma div, abrindo uma nova janela e mandando escrever o innerhtml desta div. (monta a página, mas na hora de imprimir, na tela não aparecem erros, mas a impressão sai a tela de debug do tomcat


************************************************************


error reading request, ignored - java.lang.arrayindexoutofboundsexception





	at org.apache.tomcat.service.http.httprequestadapter.parseheaderfiled(httprequestadapter.java:224)





	at org.apache.tomcat.service.http.httprequestadapter.readheaders(httprequestadapter.java:205)





	at org.apache.tomcat.service.http.httprequestadapter.readnextrequest(httprequestadapter.java:140)





	at org.apache.tomcat.service.http.httpconnectionhandler.processconnection(httpconnectionhandler.java:195)





	at org.apache.tomcat.service.tcpworkerthread.runit(pooltcpendpoint.java:416)





	at org.apache.tomcat.util.threadpool$controlrunnable.run(threadpool.java:498)





	at java.lang.thread.run(thread.java:484)








*****************************************************


pelo que pude observar, ao mandar imprimir, por algum motivo ele chama novamente a pesquisa e  pau na impressão. por que? não sei.





eis a diferença dos métodos:





1 - duas pesquisas:





/*************


 este método roda o jsp novamente e monta a página sem exibir cabeçalho e rodapé.


*/





    <script language="J A V A S C R I P T">





      function executa()


      {


        relatorio = window.open(´/controle_fc/servlet/controle_fc/relattfcporlcomrmcp?acao=imprime&mlocal=<%=mlocal%>&hlocal=<%=hlocal%>´,


                    ´impressao´, ´width=700,left=50,toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes´);


        relatorio.focus();


      }





    </script>





    <table width="680" border="0" cellpadding="2" cellspacing="0" align="center" name="obs">


      <tr>


        <td>


          <div align="right">


              <a onclick="executa()" class="mao">versão para imprimir</a>


          </div>


        </td>


      </tr>


    </table>





2 - uma pesquisa:





    <div align="center">


      <a href="#" onclick="executa()">vers&atilde;o para imprimir</a>


    </div>





    <script language="J A V A S C R I P T">





      function executa()


      {





        cabecalho = "<html>n  <head>n    <title>tresc - controle de flash-cards</title>n    <meta http-equiv=´content-type´ content=´text/html; charset=iso-8859-1´>"+


                    "n    <link rel=stylesheet href=´/padrao.css´ type=´text/css´ >n  </head>n  <body leftmargin=´0´ topmargin=´0´ marginwidth=´0´ marginheight=´0´>"+


                    "n    <a name=´topo´></a>n    <br>n    <h2 align="center">quantidade de flash-cards por localiza&ccedil;&atilde;o<br> com respons&aacute;vel, marca, capacidade e patrim&ocirc;nio</h2>n    <br>";





        conteudotabela = document.all.tabela.innerhtml;





        botoes = "n    <p>&nbsp;</p>"+


                 "n    <div align=´center´ id="icones">"+


                 "n


<img src=´/modelo/nivel3/impressora.gif´ onclick="mostra(icones, ´hidden´);" class=´mao´>


<img src=´/modelo/nivel3/porta.gif´ onclick="window.close()" class=´mao´>"+


                 "n    </div>"+


                 "n    <div align=´center´ id="mostra" onmouseover="mostra(icones, ´visible´)">"+


                 "n    &nbsp;&nbsp;&nbsp;&nbsp;"+


                 "n    </div>";





        scriptbotoes = document.all.script.innerhtml;





        estilo = document.all.staile.innerhtml;





        rodape = "blabla"





        conteudo = cabecalho + conteudotabela + "<p>" + botoes + scriptbotoes + estilo + rodape;


        destino = window.open(´´, nome, ´propriedades´);


        destino.document.write( conteudo );


        destino.focus();


      }





    </script>








é bastante coisa pra ler, mas espero que entendam e possam ajudar.





qualquer coisa, é  responder: <a>[email removido]</a>





obs.:  tentei enviar a pesquisa por parametro e por atributo, ambos dão erro de index no array.

5 Respostas

F

Olá,



Pq vc não mantém a lista na seção e usa a primeira solução?



Assim não precisa fazer uma nova consulta.

R

Pra ser sincero, não fiz isso porque não sei.



Se puderes me ensinar, fico grato :slight_smile:



Att.



Renato Back

R

Se alguém vier a ficar curioso, consegui resolver o problema da impressão com JavaBeans.



Mas fica a curiosidade…



Sempre que eu mandava imprimir e ia dar errado, no spool de impressão aparecia o endereço da página "http://localhost:8080/…"



Já quando funcionava e imprimia, no spool mostrava o título da página "teste".



Se alguém imaginar o motivo, favor postar.



[]s



Renato Back

F
oi renato,





deixa ver se eu entendi:


qdo dava erro o texto q deveria ser impresso, aparecia no prompt do tomcat?


se for isto, eu não faço a mínima idéia, do motivo.





pelo q vc postou na primeira msg, eu acho q o a mensagem q aparecia no promot, era a stacktreace da exeção gerada, certo?


bom, se for isto. tá tudo normal.





Sobre manter a lista na seção: Usar JavaBeans é uma ótima solução mas, caso vc não estivesse usando, podia fazer direto no JSP da seguine forma:





<%


session.setAttribute("nomdeDaLista" , lista);


%>





Na próxima página, é só pegar a lista:


<%


Collection list = session.getAttribute("nomdeDaLista" );


%>





você está azendo a impressão via J A V A S C R I P T?





Abraço





Franklin Samir

[ Esta mensagem foi editada por: Franklin em 22-03-2003 13:01 ]
R

Daí Samir,



Sim, a impressão era por J A V A S C R I P T. O famoso "window.print()"

O prompt que eu estava falando era o spool de impressão. Sabe quando vai imprimir e aparece uma impressora no systray ? Pois é, quando eu abria o gerenciamento de impressão, o nome do documento era como eu descrevi no post anterior.



A saída do session parece ser uma boa, pena que não pensei nisso antes de ficar fuçando nos JavaBeans.



Valeu pela ajuda.

[]s



Renato Back

Criado 10 de março de 2003
Ultima resposta 25 de mar. de 2003
Respostas 5
Participantes 2