Gerar relatório e continuar o ciclo de vida

Olá estou fazendo a geração de relatório em uma página de cadastr e se
estiver um combo box selecionado tem Salvar e gerar um relatório.
Ao clicar em salvar ele gera o relatório corretamente, salva o
conteúdo que quero persistir, porém o ciclo de vida é afetado pois ao
salvar tem que ir para uma nova página, mas aparece o popup para
salvar o relatório ou abri-lo mas continua na mesma página.
Obrigado

public String incluir() {
                try {
                        dadosForm.validar();
                        this.manterOcorrenciaAlunoEJB.inserir(dadosForm);

===============AQUI ELE CHAMA O MÉTODO PARA IMPRIMIR O RELATÓRIO

                        this.imprimirCarta();

=====================================================================

                        FacesUtil.adicionarMensagemAviso("Inclusão realizada com sucesso");
                } catch (NegocioException e) {
                        e.printStackTrace();
                        FacesUtil.adicionarMensagemErro( e.getMensagens() );
                        return null;
                } catch (Exception e) {
                        e.printStackTrace();
                        FacesUtil.adicionarMensagemErro("Erro ao realizar a inclusão: "  +e.getMessage());
                        return null;
                }
                String retorno = getPaginaPesquisa();
                FacesUtil.getFacesContext().responseComplete();
                return retorno;
        }

 public void imprimirCarta(){
        try {
            //obtem os dados do relatorio
            List<OcorrenciaAluno> dados = new ArrayList();
            dados.add(this.dadosForm);

            //define o path completo do arquivo do relatorio (.jasper)
            String arqJasper = FacesUtil.getRealPath() + "/reports/CartaOcorrenciaAluno.jasper";

            //define os parametros do relatorio
            Map<String, Object> parametros = new HashMap<String,Object>();
            parametros.put("textonotificacao",this.dadosForm.getTextoNotificacao());
            parametros.put("imagem", FacesUtil.getRealPath() + "/images/");

            //gera o relatorio e o envia como resposta para o browser.
            FacesUtil.gerarRelatorioPdf(arqJasper,  //path completo doarquivo .jasper
                                        dados,      //um List contendo os dados do relatorio
                                        parametros, //um Map com os parametros que o relatorio necessita
                                        "CartaOcorrenciaAluno.pdf"); //nome do arquivo PDF
        } catch (Exception e) {
            e.printStackTrace();
            FacesUtil.adicionarMensagemErro(e.getMessage());
        }
    }

public static void gerarRelatorioPdf(String arquivoJasper, List dadosRelatorio, Map<String, Object> parametrosRelatorio, String nomePdf)
                        throws NegocioException {
                try {
                        //obtem o relatorio como PDF através da classe RelatorioJasper
                        //passando o 'arquivo jasper', os 'dados' e os 'parametros' do relatorio (este ultimo
                        //nao eh obrigatorio)
                        byte[] relatorioPdf = RelatorioJasper.gerarPdf(arquivoJasper, dadosRelatorio, parametrosRelatorio);

                        // obtem o objeto response
                        HttpServletResponse response = getResponse();

                        // Define No response o tipo do arquivo que será exibido no
                        // navegador (PDF)
                        response.setContentType("application/pdf");

                        // Configura informações sobre o arquivo no response
                        if (StringUtils.isEmpty(nomePdf)) {
                                nomePdf = "relatorio.pdf";
                        }
                        response.setHeader("Content-disposition", "attachment;filename=" +nomePdf);

                        // Envia os bytes do arquivo PDF, através de um fluxo de dados,para
                        // o browser
                        response.getOutputStream().write(relatorioPdf);

                        // Avisa p/ o 'ciclo de vida JSF' que já terminamos de usar o
                        // response,
                        // logo, os demais passos do ciclo de vida serão executados até que
                        // o
                        // PDF seja exibido em tela, para o usuário
                        getFacesContext().responseComplete();

                } catch (Exception e) {
                        throw new NegocioException("Erro ao gerar o relatorio: "
                                        + e.getMessage());
                }
        } 

Cara colocar o código entre CODE que fica mais facil para vizualizar.Muitas pessoas deixam de ver seu código por ele não estar formatado

Valeu