ByteArrayOutputStream para download com JSF. [RESOLVIDO]

Olá pessoal,

Fiz algumas pesquisas, mas não consegui resolver o problema, então peço a ajuda dos colegas:

Contextualizando: Tenho uma lista de arquivos em uma datatable(estou usando richfaces), para cada linha da tabela tem um botão para fazer o download do arquivo correspondente.
O problema é que quando jogo o conteudo para a página, está “imprimindo” o conteúdo do arquivo direto na página ao invés de abriar a caixa de diálogo para abrir ou salvar.
Os arquivos podem ser de diversos tipos: pdf, xls, eap, doc, txt, zip, mpp, jpg, entre outros.

Segue as partes do código para análise:
JSF:

<rich:column id="BDownload"
             style=" width : 100px;" > 
    <f:facet name="header">
        <h:outputText id="OTDownload"
                      value="Download"
                      style=" width : 100px;" />
    </f:facet>
    <a4j:commandButton 
        value="Download"
      action="#{listaArtefatos.download}"
      ajaxSingle="true"
      style=" width : 70; ">

      <a4j:actionparam name="current" 
        value="#{row}" 
        assignTo="#{listaArtefatos.indexAtual}"
      />
    
    </a4j:commandButton>								                
</rich:column>

Mbean

	public void download() {
		this.entrada = revisoes.get(indexAtual);

		ByteArrayOutputStream baos = new ByteArrayOutputStream();

		baos = svn.recuperarArquivo(entrada.getUrl(), entrada.getNome(),
				entrada.getRevisao());
		
		
		executeDownload(baos, entrada.getNome());
	}

	private void executeDownload(ByteArrayOutputStream baos, String fileName) {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) facesContext
				.getExternalContext().getResponse();
		response.setHeader("Content-Disposition", "attachment; filename=\""
				+ fileName + "\";");
		response.setContentType("application/force-download");
		response.setContentLength( baos.size() );  
		
		ServletOutputStream sos;
		try {
			sos = response.getOutputStream();
			baos.writeTo(sos);  
			sos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}  
		FacesContext.getCurrentInstance().responseComplete();
	}

Veja esse tutorial: http://pablonobrega.files.wordpress.com/2009/04/como_forcar_download_de_arquivos_em_jsf-struts1.pdf

Deu certo Rafael.

Obrigado.