| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2006 20:42:16
|
Tijolo
![[Avatar]](/images/avatar/38b3eff8baf56627478ec76a704e9b52.jpg)
Joined: 19/04/2006 20:18:55
Messages: 4
Offline
|
Pessoa, estou tentando integrar o Mentawai com o Jasper e fazer uma Action gerar um relatório em pdf.
Quanto a Action consegui fazer algo perto do que eu gostaria!
Code:
public String getTest()
{
String pathJasper = "C:/"; //usando caminho do .jasper
String path = "C:/"; //salvando o PDF no C:\ da maquina! Algo tosco mas já é algo!
conexao();
Map parametros = new HashMap();
parametros.put("SQL","SELECT * FROM usuarios");
try {
JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "rptTeste.jasper", parametros, con);
JasperManager.printReportToPdfFile(impressao, path+ "RelatorioTeste.pdf");
return SUCCESS;
} catch (Exception e) {
return ERROR;
}
}
O trecho a acima cria e salva um relatório em PDF, mas eu gostaria de abri-lo automaticamente, sem precisar salvar, algo como jogar em Stream e abrir pro usuário na hora.
Alguem pode me ajudar no que falta?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2006 21:10:57
|
Lobo
![[Avatar]](/images/avatar/093f65e080a295f8076b1c5722a46aa2.jpg)
Joined: 23/01/2006 02:17:14
Messages: 841
Location: Fortaleza-CE
Offline
|
cara posso adiantar um lance mas tipo essa tua dúvida ta mais pra fórum de jasper reports do que mentawai não acha ?
vou trab com jasper e mentawai daqui a 1 mês mais ou menos quando eu for migrar mais um sistema pro mentawai,
mas acho que você não vai esperar até lá
mais vai uma ajuda :
Code:
response.setHeader("Expires", "");
response.setHeader("Cache-Control", "");
response.setHeader("Pragma", "");
response.setContentType("application/PDF");
byte[] relatorio = (byte[])session.getAttribute("array_byte");
ServletOutputStream out_pdf = response.getOutputStream();
response.setContentLength(relatorio.length);
out_pdf.write(relatorio, 0, relatorio.length);
out_pdf.flush();
out_pdf.close();
Cara to sem tempo, to responsável por 8 webapps ta animal o lance , mas
queria ter um tempo pra fazer umas receitas de bolo com cewolf, jfreechart ,
jasperreports essas e outras tecnologias.
Atenciosamente,
Hélio Frota
|
Atenciosamente,
Hélio Frota
Helio Frota
10+ Java Programmer
heliofrota.com
Mentawai Developer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 04:50:01
|
Tijolo
![[Avatar]](/images/avatar/38b3eff8baf56627478ec76a704e9b52.jpg)
Joined: 19/04/2006 20:18:55
Messages: 4
Offline
|
Dae Lobo (e pessoal)
Dessa forma seria simples.
Mas dentro de um Servlet!
Eu não tenho um Servlet, tenho um action, logo não tenho response por exemplo...
Logo no meu AppManager eu tenho:
Code:
action("/Relatorios", RelatoriosAction.class, "getTest")
.on(SUCCESS, fwd("/home/index.jsp"))
.on(ERROR, fwd("/home/index.jsp"))
.filter(common).filter(new InjectionFilter());
Isso pq o retorno da minha função getTest é um SUCCESS ou ERROR!
Entenderam?
Vi um outro tópico onde o Sérgio falou em criar um JasperConsequence para essa situação, mas não sei nem por onde começar!
Help me!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 08:36:09
|
Lobo
![[Avatar]](/images/avatar/093f65e080a295f8076b1c5722a46aa2.jpg)
Joined: 23/01/2006 02:17:14
Messages: 841
Location: Fortaleza-CE
Offline
|
To sacando o que você quer dizer
mas não posso quebrar a cabeça com isso agora
JasperConsequence eu ia por esse lado mesmo cara
fazer um lance pra depois que a ação
for efetuada que ao meu ver a ação seria a montagem do select , a compilação ou load do design do relatório.
alguma coisa depois dessa ação tem que mandar isso ai pro usuário.
mas não é impossível não se não ta dando pra desenrolar cara larga um scriptlet no jsp e espera eu ou outro cara fazer algum exemplo com o mentawai. na minha opinião o mentawai ta me ajudando e muito mas
vou ter q encarar isso ai tambem daqui a 1 mes, so vou me preocupar depois.
Atenciosamente,
Hélio Frota
|
Atenciosamente,
Hélio Frota
Helio Frota
10+ Java Programmer
heliofrota.com
Mentawai Developer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 09:04:40
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
O trecho a acima cria e salva um relatório em PDF, mas eu gostaria de abri-lo automaticamente, sem precisar salvar, algo como jogar em Stream e abrir pro usuário na hora.
O org.mentawai.core.StreamConsequence faz exatamente isso!
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 09:25:48
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Se vc define uma consequence para sua action como StreamConsequence("application/pdf"), tudo que vc tem que fazer na action é:
Code:
output.setValue("stream", INPUTSTREAM DO PDF);
// ou
outpu.setValue("stream", BYTE ARRAY COM O PDF);
E pode tb passar o Content-lenght:
Code:
output.setValue("contentLength", TAMANHO EM BYTES DO PDF);
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 12:48:00
|
Tijolo
![[Avatar]](/images/avatar/38b3eff8baf56627478ec76a704e9b52.jpg)
Joined: 19/04/2006 20:18:55
Messages: 4
Offline
|
Pessoal, fiz e deu certo, então ae vai a dica:
Criei um Action normal e nele a seguinte função:
Code:
public String getRelatorio()
{
conexao(); //cria e inicia a variavel "con" que vai ser usada como dataSource pra o relatorio
Map parametros = new HashMap();
parametros.put("SQL","SELECT * FROM usuarios"); //envia como paramentro para o meu relatorio o comando sql que vai usar para listar os dados
try { //try :)
JasperPrint impressao = JasperFillManager.fillReport(pathJasper + "rptTeste.jasper", parametros, con); //cria o relatório com o arquivo do iReports
byte[] saida = JasperManager.printReportToPdf(impressao); //recupera os bytes do relatório criado
output.setValue("stream", saida); //joga no output padrão "stream" os bytes do relatório
output.setValue("contentLength", saida.length);
return SUCCESS; //retorno de sucesso foi direcionado para o new StreamConsequence("application/pdf"), o que exibe o relatorio
}
catch (Exception e) //catch
{
e.printStackTrace();
return ERROR;
}
}
Dae no ApplicationManager bastou adicionar
Code:
/*
* Relatorios!
*/
action("/Relatorios", RelatoriosAction.class, "getRelatorio")
.on(SUCCESS, new StreamConsequence("application/pdf")) //exibe o relatório na tela
.on(ERROR, fwd("/relatorios/error.jsp")) //resposta de erro caso aconteça alguma cagada
.filter(common).filter(new InjectionFilter());
E era isso... resolveu os meus problema e exibiu o relatório!
Não sei se é melhor forma fazer mas ta funcionando!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 13:00:08
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
É a melhor e mais certa maneira de fazer.
Se possível coloca o contentLength tb no output, pois isso facilita a vida do browser.
(Vc viu o meu posto aí em cima ?)
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 13:07:38
|
Lobo
![[Avatar]](/images/avatar/093f65e080a295f8076b1c5722a46aa2.jpg)
Joined: 23/01/2006 02:17:14
Messages: 841
Location: Fortaleza-CE
Offline
|
maravilha
vou ler a api do mentawai antes de reinventar alguma coisa ou fora do padrão do framework.
Atenciosamente,
Hélio Frota
|
Atenciosamente,
Hélio Frota
Helio Frota
10+ Java Programmer
heliofrota.com
Mentawai Developer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 14:18:39
|
Tijolo
![[Avatar]](/images/avatar/38b3eff8baf56627478ec76a704e9b52.jpg)
Joined: 19/04/2006 20:18:55
Messages: 4
Offline
|
Se possível coloca o contentLength tb no output, pois isso facilita a vida do browser.
(Vc viu o meu posto aí em cima ?)
Hehehe, eu vi sim!
Mas não coloquei pq não sei pra que serve!
Hehehe, mas se tu ta dizendo pra por então ta la!
abraços!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2006 14:45:19
|
saoj
Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline
|
Quando o browser sabe o tamanho da coisa que ele está baixando é melhor pra ele... Pode exibir uma barra de progresso, e outras coisas mais que eu não me lembro... Já que vc tem esse valor não custa mandar para o browser...
|
Sergio Oliveira
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/04/2006 12:02:23
|
fortunao
Joined: 17/03/2006 05:49:22
Messages: 186
Offline
|
Tem algum exemplo ai?
se tiver mande pra fortunao ARROBA hotmail.com
Alex
|
Alex Fortuna
Desenvolvedor Mentawai
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 12/07/2006 23:51:07
|
racelike
Joined: 12/07/2006 15:38:48
Messages: 15
Offline
|
valeu ai pessoal pelas dicas e pelos codigos expostos. o topico do Flush tb me ajudou a gerar um relatorio
so uma pergunta, se eu quiser gerar o relatorio em uma nova janela, como se fosse popup?
Eu faria isso com javascript? por exemplo, colocando alguma flag de resposta indicando que tem o relatorio pronto, e ai entao manda abrir uma janela pra exibir o conteudo?
era assim que eu fazia, sendo que no jsp que serve pro popup, tem mais ou menos o codigo que foi colocado na classe do mentawai com as linhas do output.setValue("...");
alias, igual ao codigo que o Helio colocou mais acima no segundo post
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/11/2006 09:56:34
|
Rodrigo Morais
![[Avatar]](/images/avatar/e00da03b685a0dd18fb6a08af0923de0.jpg)
Joined: 11/07/2006 11:32:23
Messages: 51
Location: Curitiba - PR
Offline
|
galera, o meu pdf abre em branco, pq será?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/12/2006 10:58:52
|
kingair
Joined: 25/08/2006 12:18:06
Messages: 251
Offline
|
Alguém aí já integrou Menta + JasperReports + Hibernate?
Abraço
Luiz Cantoni
|
|
|
 |
|
|