Erro download de arquivo Primefaces com Dialog

<p:dataTable id="tableDownDisp" var="arquivos" value="#{DownBean.listDonw}"
                                                 paginator="true" rows="5" rowKey="#{DownBean.idArquivo}"
                                                 selection="#{DownBean.downloadSelecionado}"
                                                 selectionMode="single"
                                                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink}
                                                 {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                                 rowsPerPageTemplate="5,10">

                                          <p:column headerText="# id" style="width:185px" >
                                              <h:outputText value="#{arquivos.idArquivo}" />
                                        </p:column>
                                        
                                        <p:column headerText="Nome Do Arquivo" style="width:185px" >
                                            <h:outputText value="#{arquivos.nome}" />
                                        </p:column>

                                        <p:column headerText="Tipo" style="width:185px">
                                            <center>
                                                <h:outputText value="#{arquivos.tipo}" />
                                            </center>
                                        </p:column>

                                        <p:column headerText="Tamanho" style="width:185px">
                                            <center>
                                                <h:outputText value="#{arquivos.tamanho}" />
                                            </center>
                                        </p:column>

                                        <p:column headerText="Data de Upload" style="width:185px">
                                            <center>
                                                <h:outputText  value="#{arquivos.dataUpload}" >
                                                    <f:convertDateTime  dateStyle="medium"/>
                                                </h:outputText>
                                            </center>
                                        </p:column>

                                        <p:column headerText="Compartilhado Por" style="width:185px">
                                            <center>
                                                <h:outputText value="#{arquivos.amigo}"  />
                                            </center>
                                        </p:column>
                                        <!--
                                        <p:column headerText="Compartilhado Por" style="width:185px">
                                            <p:commandButton  value="Download" ajax="false"
                                                             onclick="PrimeFaces.monitorDownload(start, stop)"
                                                             icon="ui-icon-document"  
                                                             oncomplete="CompartilharAqruivo.show()">
                                                <p:fileDownload value="#{fileDownloadBean.file}" />  
                                                                 
                                            </p:commandButton>
                                        </p:column>
                                        -->
                                        <f:facet name="footer">
                                                                                          
                                            <p:commandButton id="downloadLink" value="Download" ajax="false"
                                                             onclick="PrimeFaces.monitorDownload(start, stop)"
                                                             icon="ui-icon-document" >
                                                <p:fileDownload value="#{fileDownloadBean.file}" />  
                                                                 
                                            </p:commandButton>
                                        </f:facet>
                                        
                                    </p:dataTable>

/carregar.xhtml @152,77 selection="#{DownBean.downloadSelecionado}": Cannot convert entidades.Download@ca35c9 of type class entidades.Download to class bean.DownBean

Alguem???

esse erro, /carregar.xhtml @152,77 selection="#{DownBean.downloadSelecionado}": Cannot convert entidades.Download@8e74da of type class entidades.Download to class bean.DownBean

se eu deixa o botao aki nao da esse erro

[code]
<p:column headerText=“Compartilhado Por” style=“width:185px”>
<p:commandButton value=“Download” ajax=“false”
onclick=“PrimeFaces.monitorDownload(start, stop)”
icon=“ui-icon-document”
oncomplete=“CompartilharAqruivo.show()”>
<p:fileDownload value="#{fileDownloadBean.file}" />

                                        </p:commandButton>  
                                    </p:column>  [/code]

Funciona…

mais colocando no footer e com downloadselecionado da erro

<f:facet name="footer">  
                                                                                            
                                            <p:commandButton id="downloadLink" value="Download" ajax="false"  
                                                             onclick="PrimeFaces.monitorDownload(start, stop)"  
                                                             icon="ui-icon-document" >  
                                                <p:fileDownload value="#{fileDownloadBean.file}" />    
                                                                   
                                            </p:commandButton>  
                                        </f:facet> 

alguem???

Boa Tarde

:idea: Poderia ter postado seu bean …

Obs: No downloadSelecionado você cria um objeto do tipo StreamedContent ? Se não, você poderia cria esse objeto no commandButton do footer via actionlistener e ai baixar o arquivo …

Exemplo:

<p:fieldset legend="Formato A0"> <h:panelGrid columns="2" cellpadding="10"> <p:commandLink actionListener="#{downloadBean.downloadFormatoA0}" ajax="false"> <p:graphicImage value="/imagens/download.bmp" /> <p:fileDownload value="#{downloadBean.file}" /> </p:commandLink> <h:outputText value="A0 é tamanho do papel, definido pela norma ISO 216, é utilizado em todos os países, excepto nos EUA, Canadá e em alguns países sul americanos. A0 tem 841mm de largura e 1189mm de altura. A área da folha A0 é de 1 m²." /> <f:facet name="footer"> <a href="http://pt.wikipedia.org/wiki/A0">Origem: Wikipédia, a enciclopédia livre</a> </f:facet> </h:panelGrid> </p:fieldset>

Bean

[code]/**
*

  • @author cleyson
    */
    import java.io.InputStream;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import org.primefaces.model.DefaultStreamedContent;
    import org.primefaces.model.StreamedContent;

@ManagedBean
@RequestScoped
public class DownloadBean {

private StreamedContent file;
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); // Context

public StreamedContent getFile() {  
    return file;  
}  

public void setFile(StreamedContent file) {  
    this.file = file;  
}  


public void downloadFormatoA0(){
    InputStream stream = context.getResourceAsStream("/formatos/Formato_A0.dwg");
    file = new DefaultStreamedContent(stream, "application/dwg", "Formato_A0.dwg");
} 
public void downloadFormatoA1(){
    InputStream stream = context.getResourceAsStream("/formatos/Formato_A1.dwg");
    file = new DefaultStreamedContent(stream, "application/dwg", "Formato_A1.dwg");
}   
public void downloadFormatoA2(){
    InputStream stream = context.getResourceAsStream("/formatos/Formato_A2.dwg");
    file = new DefaultStreamedContent(stream, "application/dwg", "Formato_A2.dwg");
}   
public void downloadFormatoA3(){
    InputStream stream = context.getResourceAsStream("/formatos/Formato_A3.dwg");
    file = new DefaultStreamedContent(stream, "application/dwg", "Formato_A3.dwg");
} 
public void downloadFormatoA4(){
    InputStream stream = context.getResourceAsStream("/formatos/Formato_A4.dwg");
    file = new DefaultStreamedContent(stream, "application/dwg", "Formato_A4.dwg");
}

}[/code]

Tem como fazer por Servlet

<p:commandLink  action="#{conversaoCoordenadaBean.baixarModelo()}" id="downloadLink" value="Download" ajax="true" style="font-weight: bold;color: blue">

Bean

[code]public String baixarModelo() throws IOException {
byte data[] = new byte[BUFFER];
int count;
ExternalContext context = FacesContext.getCurrentInstance().getExternalContext(); // Context
HttpSession session = (HttpSession) context.getSession(false);
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
//Leitura da Sessao de Layers
InputStream stream = context.getResourceAsStream("/documentos/Modelo.txt");

    while ((count = stream.read(data, 0, BUFFER)) != -1) {
        outStream.write(data, 0, count);
    }
    //Passando Parametros via Sessao
    session.setAttribute("arquivo", outStream);
    session.setAttribute("nomeFile", "Modelo.txt");
    session.setAttribute("formato", "txt");
    redirect("/DownloadServlet");
    FacesContext.getCurrentInstance().responseComplete();
    return "";
}

[/code]

Servlet

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.faces.bean.SessionScoped;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
*

  • @author cleyson
    */
    @WebServlet(name = “DownloadServlet”, urlPatterns = {"/DownloadServlet"})
    @SessionScoped
    public class DownloadServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ServletOutputStream ouputStream = null;

     try{                         
         
             HttpSession session = request.getSession(true); 
                   
             response.setContentType("application/octet-stream"); 
             response.addHeader("Content-Disposition", "attachment; filename=\"" + session.getAttribute("nomeFile") + "\";"); 
             response.setContentType((String) session.getAttribute("formato")); //Tipo do Arquivo 
                    
                                      
             //Recuperando os parâmetros enviados
             ByteArrayOutputStream file = (ByteArrayOutputStream)session.getAttribute("arquivo");
    
             byte bytes[] = null;
             
             bytes = file.toByteArray(); 
             response.setContentLength(bytes.length);                                
             ouputStream = response.getOutputStream();  
             ouputStream.write(bytes, 0, bytes.length);                            
             ouputStream.flush();
    
          
      }catch(Exception e){
          e.printStackTrace();         
      }finally {
         
         if (ouputStream != null)
             ouputStream.close();
         
      }
    

    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
    return “Short description”;
    }//

} [/code]

Pra quem só tinha um alguém com muitos pontos de interrogações já é alguma coisa … :lol: