Erro download de arquivo Primefaces com Dialog

4 respostas
B
<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

4 Respostas

B

Alguem???

B

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
<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>

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>
B

alguem???

C

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

/**
 *
 * @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");
    }
                
}
Tem como fazer por Servlet
<p:commandLink  action="#{conversaoCoordenadaBean.baixarModelo()}" id="downloadLink" value="Download" ajax="true" style="font-weight: bold;color: blue">
Bean
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 "";
    }
Servlet
/*
 * 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";
    }// </editor-fold>

}

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

Criado 24 de outubro de 2012
Ultima resposta 26 de out. de 2012
Respostas 4
Participantes 2