Pessoal, estou com um problema na geração de relatórios utilizando JSF e jasperreports.
O procedimento para geração do relatório preve o clique em um ítem de menu que direcione o usuário para uma tela onde são informados alguns parâmetros (Ex. Relatório A). Após a informação destes parâmetros o usário clica em um botão onde o relatório é gerado perfeitamente em uma outra janela! Daí começam os problemas: se o usário clicar em qualquer outro ítem do menu (diremos Relatorio B), ele é redirecionado para a tela de parâmetro solicitada no clique anterior (Relatório A). Se ele clicar novamente no item de menu desejado (Relatorio B) daí sim ele é redirecionado corretamente. Ou seja, após a geração de qualquer relatório o usuário precisa clicar duas vezes em um botão ou ítem de menu para executar corretamente a ação!
Alguém pode me ajudar?
JSF e jasperreports
4 Respostas
como tu ta fazendo para gerar os relatorios com o jasper, tenho um sistema usando esta combinação mas não tive problemas assim …
tu ta gerando os relatorios em PDF ou HTML mesmo?
Estou gerando em PDF.
Como foi a primeira vez que usei jasper com JSF e tive problemas, tentei com alternativa os mais diversos códigos a disposição neste e em outros fórums e nada! A principio creio estar relacionado ao LifeCycle do JSF. O engraçado é que quando ainda não utilizava o jasper no JSF li superficialmente em um forum (inglês) exatamente o mesmo problema, entretanto, agora que preciso não consigo achar nada a respeito, kkkkkkkkk!
Detalhe: quando vc. navega por entre os ítens de menu que chamam as telas para prenchimento dos critérios para geração dos relatórios, a navegação acontece sem maiores problemas. No entato, quando em uma destas telas vc. faz o preenchimento destes critérios e chama o relatório daí acontece o problema de navegação que informei!
bom, a minha solução foi criar um ManagedBean, com um metodo que iria gerar o relatorio,
neste ele pegava o request e o response pelo FacesContext.getInstance().getExternalContext().algumacoisaquenaolembroagora
logo depois disto eu usava o response para pegar um writer e imprimir o pdf
e depois disto para finalizar tinha que chamar um metodo FacesContect.responseComplete ou algo assim.
Depois de muito sofrimento consegui achar a solução!!! O problema está no Myfaces e a solução é a seguinte:
Antes do:
getFacesContext().responseComplete();
Colocar:
getFacesContext().getApplication().getStateManager().saveSerializedView(getFacesContext());
…e pronto!
Valeu pela força, Urubatan!