[RESOLVIDO] Abrir relatório numa pop up

Olá pessoal,
Sei que já existem tópicos tratando sobre esse assunto, porém em nenhum deles eu consegui resolver meu problema.

Eu preciso que um relatório seja aberto numa pop up, porém ao clicar no botão ele abre a pop up com erro 404 e em seguida abre o relatório corretamente na página que eu chamei o relatório. Ou seja, ele simplesmente utiliza a mesma página para abrir o relatório.

Esse relátorio será impresso várias vezes por dia pelo usuário do sistema por isso achei melhor não fazer download.

Vou postar algumas tentativas:

Assim ele abre numa nova aba:

onclick="this.form.target='_blank'" 

Assim ele abre na mesma página e também abre uma pop up em branco:

<p:commandButton value="Gerar atendimento" ajax="false" action="#{pacienteBean.geraFicha}" onclick="javascript:window.open('','busca','height=480,width=640,toolbar=no,scrollbars=no')" target="busca" />

Já tentei usando javascript também, mas o comportamento é o mesmo do código acima.

Alguém pode me ajudar?

Você pode usar o ModalPanel do RichFaces. Se você já tem a página que exibirá o relatório, joga ela dentro desse componente que resolver.

Segue o link do exemplo: http://liferay.exadel.com/web/guest;jsessionid=CED440707B0B715EC8EA223907F829A0#

é só modificar diretamente no form o target para _blank

Eu faria da seguinte forma, se for possivel, é claro:

  • Guardaria em uma pasta do servidor, e abriria por windows.open, passando na URL o caminho fisico de arquivo.

Espero que tenha ajudado.

[quote=julynhaprado]Olá pessoal,
Sei que já existem tópicos tratando sobre esse assunto, porém em nenhum deles eu consegui resolver meu problema.

Eu preciso que um relatório seja aberto numa pop up, porém ao clicar no botão ele abre a pop up com erro 404 e em seguida abre o relatório corretamente na página que eu chamei o relatório. Ou seja, ele simplesmente utiliza a mesma página para abrir o relatório.

Esse relátorio será impresso várias vezes por dia pelo usuário do sistema por isso achei melhor não fazer download.

Vou postar algumas tentativas:

Assim ele abre numa nova aba:

onclick="this.form.target='_blank'" 

Assim ele abre na mesma página e também abre uma pop up em branco:

<p:commandButton value="Gerar atendimento" ajax="false" action="#{pacienteBean.geraFicha}" onclick="javascript:window.open('','busca','height=480,width=640,toolbar=no,scrollbars=no')" target="busca" />

Já tentei usando javascript também, mas o comportamento é o mesmo do código acima.

Alguém pode me ajudar?[/quote]

Tenta colocar no atributo onclick do seu commandButton isso: (ponto e vírgula pra finalizar o comando window.open); return false;

[quote=bob_sponja][quote=julynhaprado]Olá pessoal,
Sei que já existem tópicos tratando sobre esse assunto, porém em nenhum deles eu consegui resolver meu problema.

Eu preciso que um relatório seja aberto numa pop up, porém ao clicar no botão ele abre a pop up com erro 404 e em seguida abre o relatório corretamente na página que eu chamei o relatório. Ou seja, ele simplesmente utiliza a mesma página para abrir o relatório.

Esse relátorio será impresso várias vezes por dia pelo usuário do sistema por isso achei melhor não fazer download.

Vou postar algumas tentativas:

Assim ele abre numa nova aba:

onclick="this.form.target='_blank'" 

Assim ele abre na mesma página e também abre uma pop up em branco:

<p:commandButton value="Gerar atendimento" ajax="false" action="#{pacienteBean.geraFicha}" onclick="javascript:window.open('','busca','height=480,width=640,toolbar=no,scrollbars=no')" target="busca" />

Já tentei usando javascript também, mas o comportamento é o mesmo do código acima.

Alguém pode me ajudar?[/quote]

Tenta colocar no atributo onclick do seu commandButton isso: (ponto e vírgula pra finalizar o comando window.open); return false;[/quote]

Obrigada pela atenção de todos.

Eu tentei da forma que você me passou:

<p:commandButton value="Gerar atendimento" ajax="false" action="#{pacienteBean.geraFicha}" onclick="javascript:window.open('','busca','height=480,width=640,toolbar=no,scrollbars=no');return false;" target="busca" />

Ele abre uma pop up em branco, e a página atual continua normal. É isso que eu quero, mas o relatório não veio na pop up. :cry:

Mais alguma idéia?

[quote=guilhermehkr]Eu faria da seguinte forma, se for possivel, é claro:

  • Guardaria em uma pasta do servidor, e abriria por windows.open, passando na URL o caminho fisico de arquivo.

Espero que tenha ajudado.[/quote]

Seria assim a implementação da sua sugestão?
Se for assim eu já tentei, ele abre uma pop up com erro 404.

<p:commandButton value="Gerar atendimento" ajax="false" action="#{pacienteBean.geraFicha}" onclick="javascript:window.open('/nomePasta/nomeArquivo','busca','height=480,width=640,toolbar=no,scrollbars=no');return false;" target="busca" />

então, como eu havia dito ali em cima.
No meu ponto de vista para abrir este relatorio num pop-up você teria que passar o caminho fisico de um arquivo, pdf, na URL do windows.open mas devem haver outras formas.

A pop-up vem em branco porque não há o que mostrar nela.

[quote=guilhermehkr]então, como eu havia dito ali em cima.
No meu ponto de vista para abrir este relatorio num pop-up você teria que passar o caminho fisico de um arquivo, pdf, na URL do windows.open mas devem haver outras formas.

A pop-up vem em branco porque não há o que mostrar nela.

[/quote]

Já passei o caminho do relatório assim e não funcionou também. :cry:
Estou ficando sem idéias…

Agradeço pela ajuda.

Talvez você não tenha passado o caminho correto do contexto!
Pode postar o que você fez?!

Aqui no projeto nos fazemos desta forma, se quiser posto como fazemos aqui!

[quote=guilhermehkr]Talvez você não tenha passado o caminho correto do contexto!
Pode postar o que você fez?!

Aqui no projeto nos fazemos desta forma, se quiser posto como fazemos aqui![/quote]

Bom dia Guilherme,
Você poderia postar a forma que vocês fazem? Será de grande valia.

Consegui resolver galera…
Só precisei trocar o botão por um <h:commandLink>

Assim funcionou certinho:

<h:commandLink value="Gerar atendimento" onclick="javascript:window.open('','busca','height=480,width=640,toolbar=no,scrollbars=no')" target="busca" action="#{pacienteBean.geraFicha}" />

Não entendo porque os <p:commandButton> as vezes não funcionam para determinadas coisas…Eu já havia colocado ajax=“false” e nada.
Agora eu vou usar o <h:commandLink> mesmo, e colocar ícones para padronizar, porque tenho outros botões no mesmo diálogo.

Agradeço a ajuda de todos. :wink:

A solução encontrada por julynhaprado funcionou perfeitamente para mim. Obrigado por compartilhar!

Galera,
Só para deixa o tópico mais explicado.

Caso tenha mais de um botão na tela em JSF, e precise que o botão abra em uma nova página, esse botão é preciso ser do tipo <h:commandLink>, ou seja o Link e não um botão.

Assim pode usar os botões normais como <h:commandButton>, e botão que precise abrir em uma nova aba usar o <h:commandLink>.

&lt;h:commandLink&gt; id=&quot;visualizarPrescricao&quot; value=&quot;Visualizar&quot;  action=&quot;{consultaPrescricao.gerarRelatorioPrescricao()}&quot;  target=&quot;_blank&quot;  style=&quot;width:160px;&quot; /&gt;   

Ai os botões funcionam corretamente, e o Link abra em uma nova aba normal.
Sem que todos os botões abrem em nova aba por engano.

Valeu …

O que acontece e que ela estava tentando abrir o relatório fazendo uma chamada ajax… por padrão as tags do primefaces <p:qualquercoisa/> tem o ajax habilitado…

o que é diferente de um <h:qualquercoisa/> que faz uma chamada http (nao ajax) .

ela também poderia resolver o problema colocando o atributo ajax=“false”. no botao do primefaces <p:commandButton ajax=“false” />