Do jeito que está atualmente o relatório está abrindo na mesma página, quebrando a navegação. Queria uma dica da melhor maneira de fazer esse commandButton abrir esse PDF em outra página. De preferência com um exemplo de código.
Tem como fazer isso com o commandButton? Porque tem no projeto alguns botões padrão
rollei
A cargo de teste eu mudei o botão.
<h:commandLinkvalue="Teste"target="_blank"action="#{PesquisaSolicitacaoMB.emitirRelatorioSolicitacao}"onclick="if (!confirm('Tem certeza que deseja EMITAR RELATÒRIO da solicitação #{solicitacao.pkSeqSolicitacaoSol}?')) return false"style="float:left"rendered="#{renderBotaoEmitirRelatSolicitacao}"><f:setPropertyActionListenertarget="#{PesquisaSolicitacaoMB.idSolicitacao}"value="#{solicitacao.pkSeqSolicitacaoSol}"/><rich:toolTip><spanstyle="white-space:nowrap"><strong>Emitirrelatório</strong>dasolicitação
</span><h:outputTextvalue="#{solicitacao.pkSeqSolicitacaoSol}"style="font-weight: bold"/></rich:toolTip></h:commandLink>
ele continua abrindo o relatório na mesma página
G
Gbzao
Eu uso o JasperRunManager.runReportToPdfStream para enviar o relatório para o browser.
E utilizo um commandLink com target _blank ( nova janela ).
Funciona perfeitamente.
E
ebarros
rollei:
A cargo de teste eu mudei o botão.
<h:commandLinkvalue="Teste"target="_blank"action="#{PesquisaSolicitacaoMB.emitirRelatorioSolicitacao}"onclick="if (!confirm('Tem certeza que deseja EMITAR RELATÒRIO da solicitação #{solicitacao.pkSeqSolicitacaoSol}?')) return false"style="float:left"rendered="#{renderBotaoEmitirRelatSolicitacao}"><f:setPropertyActionListenertarget="#{PesquisaSolicitacaoMB.idSolicitacao}"value="#{solicitacao.pkSeqSolicitacaoSol}"/><rich:toolTip><spanstyle="white-space:nowrap"><strong>Emitirrelatório</strong>dasolicitação
</span><h:outputTextvalue="#{solicitacao.pkSeqSolicitacaoSol}"style="font-weight: bold"/></rich:toolTip></h:commandLink>
ele continua abrindo o relatório na mesma página
Tente fazer redirecionar para outra pagina assim q o relatorio for invocado.
ex:
//apos chamar o print do relatorio insira a seguinte linha de codigo metodo emitirRelatorioSolicitacao()response.sendRedirect(request.getContextPath()+"/pathDaPaginaQueDesejaRedicionar/suaPagina.jsp");
Outra dica seria usar o actionListener ao invés do action. Boa Sorte!
aspiranteJava
kra, tava com um problema parecido…
Coloca o target ="_blank" no teu form que resolve…
rollei
aspiranteJava:
kra, tava com um problema parecido…
Coloca o target ="_blank" no teu form que resolve…
Esse Form que eu tenho por exemplo tem 3 commandButtons e todos abrem outra pagina, mas soh esse de imprimir relatorio deveria abrir uma outra página. Como faço para os outros abrirem na mesma página?
rollei
Gbzao!:
Eu uso o JasperRunManager.runReportToPdfStream para enviar o relatório para o browser.
E utilizo um commandLink com target _blank ( nova janela ).
Funciona perfeitamente.
Ai acontece que o botão de gerar relatório abre outra página e o cancelar executa a função no bean e apenas renderiza a página.
Tchello
Então rollei, você conseguiu abrir o relatório em outra página?!
Ressuscitei o tópico pq esse esta exatamente no contexto que gostaria e não acho necessário criar um novo e estamos usando métodos muito semelhantes.
Abraços!
M
mrbbm
Se for só um botão ou se sempre quiser abrir em outra janela então basta colocar o target do form para _blank.
E depois na action do botão fazer o retorno do método para string e encaminha-la à pagina desejada pelo faces-config.
No meu caso que preciso somente gerar o relatorio funcionu perfeitamente!!
joaopaulotds
A solução no onclick=“this.form.target=’_blank’” funcionou perfeitamente! Obrigado.
M
michelorth_92
haaaaaaaaaaa num funciona… to com o mesmo problema seu tenho 3 botoes um pra editar outro pra confirma e outro para abrir o relatorio se eu coloco onclick=“this.form.target=’_self’” não funciona e assim onclick=“this.form.target=’_blank’” todos abrem em uma nova pagina… alguem????????????w
sauron_fight
Pessoal obrigado pela ajuda.
marcusco
Boa tarde a todos.
Gostaria apenas de completar os comentários, que no meu caso
em específico, alteri o commandButtom de a4j para h.
Com isto, ficou tudo ok.
Abraços
L
luizriber
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>.
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 …
ChristinaMed
É só colocar um request.getServletContext().getRequestDispatcher no final do método emitirRelatorioSolicitacao() , para uma nova página jsp e colocar nessa nova página os valores que vão ser emitidos no relatório.
no final do método q é chamado pelo <h:commandButton> ou <h:commandLink>
R
rayldon
Consegui resolver esse problema da seguinte forma, no onclick vc coloca o target _blank e no onblur vc coloca o target em branco assim quando o cara clicar em qualquer outro link da página ele vai sair do botão e zerar o target.