Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

Geração de relatório e redirect em um mesmo

$
0
0

@jeanmalvessi escreveu:

Bom dia pessoal, tudo bem? Venho encontrando problemas ao tentar executar determinada ação em meu sistema.

Tenho um h:commandLink que sua ação (atributo "action") consiste em efetuar a liquidação de um título. Surgiu, porém, a necessidade de se gerar um recibo de pagamento nesta mesma ação. Para isso, foi adicionado um campo na tela chamado "Gerar recibo" com as opções "Sim/Não". Sendo assim, o comportamento esperado é de que ao clicar neste commandLink, seja efetuada a baixa, download do recibo e redirect para a página anterior.

A implementação está funcionando até o ponto do redirect. Consigo processar a liquidação, disponibilizo o recibo, porém não consigo voltar para a tela anterior. Imagino que seja devido à forma como estou disponibilizando o relatório gerado, como segue:

FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=" + "Recibo.pdf");

OutputStream out = response.getOutputStream();

ReciboPrinter printer = new ReciboPrinter(tos, out, true);
printer.execute();

Como podem ver, a disponibilização do arquivo PDF manipula a resposta da requisição, encerrando-a neste ponto. A partir daí, qualquer tentativa de redirecionamento apresenta a mensagem:

getOutputStream() has already been called for this response

Alguma ideia de como eu possa resolver este problema?

Obrigado.

Mensagens: 3

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>