Problema com componete fileUpload Primefaces

417 views
Skip to first unread message

Chris Allen Barroso

unread,
Sep 27, 2013, 11:36:23 AM9/27/13
to Cejug
Pessoal, alguém sabe como resolver esse problema.
Não sei porque mas so me retorna null mesmo seleccionando o arquivo desejado. 

Vi varias exemplos mas não sei o porque o meu não funciona. O getArquivo sempre consta null.
tenho as libs commons-oi e commons-fileupload

Vejam o codigo:
#################
Bean

 public void carregar() {
        String extValidate;
        if (getArquivo()!=null) {
            String ext = getArquivo().getFileName();
            if (ext!=null) {
                extValidate = ext.substring(ext.indexOf(".") + 1);
            }else {
                extValidate = "null";
            }
            if (extValidate.equals("pdf")) {
                try {
                    TransferirArquivo(getArquivo().getFileName(), getArquivo().getInputstream());
                } catch (IOException ex) {
                    Logger.getLogger(CarregarArquivoBean.class.getName()).log(Level.SEVERE, null, ex);
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Erro", "Erro ao carregar o arquivo!"));
                }
                 FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Sucesso", getArquivo().getFileName()+ 
                            "foi Carregado. Tipo do Arquivo"+getArquivo().getContentType()+"Tamanho"+getArquivo().getSize()));

            }else{
                 FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Aviso", "Apenas arquivo de extensão .pdf!"));
            }}
        else{
             FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Aviso", "Selecione o arquivo!"));
        }


            }

######################
xhtml
 <h:form enctype="multipart/form-data">  
            <p:fileUpload value="#{carregarArquivoBean.arquivo}" mode="simple" /><br></br>  
            <p:inputText value="#{carregarArquivoBean.teste}"/>
            <p:commandButton value="Submit" 
                             actionListener="#{carregarArquivoBean.carregar}" />  
        </h:form>  
        <h:form><p:growl id="growl" showDetail="true"/></h:form> 

--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent

Marcelo Rebouças

unread,
Sep 27, 2013, 12:29:48 PM9/27/13
to ce...@googlegroups.com
Chris, qual sua versão do primefaces vc está usando?

Poste como está declarada sua classe que realizará o upload. Você colocou somente o método.



--
Você está recebendo esta mensagem porque se inscreveu no grupo "CEJUG" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para cejug+un...@googlegroups.com.
Para postar neste grupo, envie um e-mail para ce...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cejug.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Atenciosamente,

Marcelo Rebouças
(85) 8805-8234
Systems Analyst / Software Developer


"Se está muito difícil de encontrar o caminho, faça-o"

Edivando José Alves

unread,
Sep 27, 2013, 12:33:33 PM9/27/13
to ce...@googlegroups.com
Vocẽ criou o filtro no web.xml ?

<!-- Upload do Primefaces -->
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*</url-pattern>
</filter-mapping>

2013/9/27 Marcelo Rebouças <marcelor...@gmail.com>:
---
Edivando J. Alves
Graduando em Engenharia da Computação pelo Instituto Federal do
Ceará-IFCE
http://lattes.cnpq.br/7355147688215145
http://edivando7.blogspot.com.br/
twitter @edivando7

Chris Allen Barroso

unread,
Sep 27, 2013, 12:54:58 PM9/27/13
to Cejug
Aqui esta marcelo;

/**
 *
 * @author ChrisAllen
 */
@ManagedBean(name="carregarArquivoBean")
@SessionScoped
public class CarregarArquivoBean implements Serializable{

    private String caminho = "C:\\Teste\\";
    private UploadedFile arquivo;
    private String teste;
    
      public UploadedFile getArquivo() {
        return arquivo;
    }

    public void setArquivo(UploadedFile arquivo) {
        this.arquivo = arquivo;
    }

    public String getCaminho() {
        return caminho;
    }

    public void setCaminho(String caminho) {
        this.caminho = caminho;
    }

    public String getTeste() {
        return teste;
    }

    public void setTeste(String teste) {
        this.teste = teste;
    }

    public CarregarArquivoBean() {
        
    }


--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent



> Date: Fri, 27 Sep 2013 13:33:33 -0300
> Subject: Re: [CEJUG] Problema com componete fileUpload Primefaces
> From: ediv...@gmail.com
> To: ce...@googlegroups.com

Marcelo Rebouças

unread,
Sep 27, 2013, 1:02:53 PM9/27/13
to ce...@googlegroups.com
Blz Chris... td normal.

Isso ae que o Edivando mencionou é necessário.

Caso, não consiga resolver, dá uma sacada nesse exemplo:
http://www.mastertheboss.com/primefaces/primefaces-file-upload-example

Abs!

Chris Allen Barroso

unread,
Sep 27, 2013, 1:06:59 PM9/27/13
to Cejug
Eu tenho assim:



--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




Date: Fri, 27 Sep 2013 14:02:53 -0300

Subject: Re: [CEJUG] Problema com componete fileUpload Primefaces

Chris Allen Barroso

unread,
Sep 27, 2013, 1:08:09 PM9/27/13
to Cejug
   
Eu tenho assim:

<context-param> 
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
        <param-value>server</param-value> 
    </context-param> 

    
    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
        <init-param>
            <param-name>uploadDirectory</param-name>
            <param-value>/uploaded</param-value>
        </init-param>
        <init-param>
            <param-name>thresholdSize</param-name>
            <param-value>51200</param-value>
        </init-param>
        <init-param>
            <param-name>uploadDirectory</param-name>
            <param-value>C:\Teste</param-value>
        </init-param>
    </filter>

<filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>



--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




From: barros...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] Problema com componete fileUpload Primefaces
Date: Fri, 27 Sep 2013 17:06:59 +0000

Chris Allen Barroso

unread,
Sep 27, 2013, 1:21:16 PM9/27/13
to Cejug
Primefaces 3.5


--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




Date: Fri, 27 Sep 2013 13:29:48 -0300

Subject: Re: [CEJUG] Problema com componete fileUpload Primefaces
From: marcelor...@gmail.com
To: ce...@googlegroups.com

Chris Allen Barroso

unread,
Oct 1, 2013, 7:52:57 AM10/1/13
to Cejug
Bom dia Pessoal,
Estou de volta com o mesmo problema. Estive ausente o final de semana todo e o feriado ontem aqui, So regressei hoje da viagem. 
Estou novamente em cima do problema e até agora nada resolvido.
Fiz enumeras mudanças e nada.
Alguém ai pode ajudar. Creio que o problema esteja no web.xml ou nas lib
Estou usando o jsf 2.0 Primefaces 3.5 netbeans 7.3


Relembrando:

Meu     private UploadedFile arquivo;
aquivo esta null mesmo eu seleccionando um arquivo no xhtml.  

Codigo a baixo: 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.logging.Level;

import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author ChrisAllen
 */
@ManagedBean(name = "carregarArquivoBean")
@ViewScoped
public class CarregarArquivoBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private String caminho = "C:\\Teste\\";
    private UploadedFile arquivo;

    public UploadedFile getArquivo() {
        return arquivo;
    }

    public void setArquivo(UploadedFile arquivo) {
        this.arquivo = arquivo;
    }

    public String getCaminho() {
        return caminho;
    }

    public void setCaminho(String caminho) {
        this.caminho = caminho;
    }

   public CarregarArquivoBean() {
    }

    public void TransferirArquivo(String nomeArquivo, InputStream in) {

        try {
            OutputStream out = new FileOutputStream(new File(caminho + nomeArquivo));
            int reader = 0;
            byte[] bytes = new byte[(int) getArquivo().getSize()];
            while ((reader = in.read(bytes)) != -1) {
                out.write(bytes, 0, reader);
            }
            in.close();
            out.flush();
            out.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public void carregar() {
        String extValidate;
        if (getArquivo() != null) {
            String ext = getArquivo().getFileName();
            if (ext != null) {
                extValidate = ext.substring(ext.indexOf(".") + 1);
            } else {
                extValidate = "null";
            }
            if (extValidate.equals("pdf")) {
                try {
                    TransferirArquivo(getArquivo().getFileName(), getArquivo().getInputstream());
                } catch (IOException ex) {
                    Logger.getLogger(CarregarArquivoBean.class.getName()).log(Level.SEVERE, null, ex);
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Erro", "Erro ao carregar o arquivo!"));
                }
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Sucesso", getArquivo().getFileName()
                        + "foi Carregado. Tipo do Arquivo" + getArquivo().getContentType() + "Tamanho" + getArquivo().getSize()));

            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Aviso", "Apenas arquivo de extensão .pdf!"));
            }
        } else {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("Aviso", "Selecione o arquivo!"));
        }


    }
}

##########################

xhtml

<h:form enctype="multipart/form-data">  
            <p:fileUpload value="#{carregarArquivoBean.arquivo}" mode="simple" required="true" label="Selecione os Arquivos"
                          sizeLimit="500000" multiple="true" dragDropSupport="true"   
                          invalidSizeMessage="Tamanha maior que o permitido!" invalidFileMessage="Extensão não Permitida"  
                          uploadLabel="Subir Arquivos" requiredMessage="Precisa de 1 Arquivos" auto="true"/><br></br>  
            <p:commandButton value="Submit" ajax="false"
                             actionListener="#{carregarArquivoBean.carregar}" />  
        </h:form>  
        <h:form><p:growl id="growl" showDetail="true"/></h:form> 


Web.xml


  <context-param> 
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name> 
        <param-value>server</param-value> 
    </context-param> 

    
    <filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>FacesServlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </filter-mapping>





--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




From: barros...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] Problema com componete fileUpload Primefaces
Date: Fri, 27 Sep 2013 17:21:16 +0000

Chris Allen Barroso

unread,
Oct 1, 2013, 11:52:42 AM10/1/13
to Cejug
Pessoal, 
Alguém tem um exemplo para ajudar? Até agora não consigo sair do erro. 


--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




From: barros...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] Problema com componete fileUpload Primefaces
Date: Tue, 1 Oct 2013 11:52:57 +0000

Marcelo Rebouças

unread,
Oct 1, 2013, 11:55:07 AM10/1/13
to ce...@googlegroups.com
Tu olhou esse exemplo que postei anteriormente?

http://www.mastertheboss.com/primefaces/primefaces-file-upload-example

Edivando José Alves

unread,
Oct 1, 2013, 11:55:40 AM10/1/13
to ce...@googlegroups.com
Cara, tu já tentou implementar o exemplo que o Marcelo falou?

http://www.mastertheboss.com/primefaces/primefaces-file-upload-example

Cria um projeto separado e tenta implementar

2013/10/1 Chris Allen Barroso <barros...@hotmail.com>:

Chris Allen Barroso

unread,
Oct 1, 2013, 12:00:09 PM10/1/13
to Cejug
Eu olhei, e fiz as alterações e nada.
Vou criar um novo projecto para testar. 


--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent



> Date: Tue, 1 Oct 2013 12:55:40 -0300

> Subject: Re: [CEJUG] Problema com componete fileUpload Primefaces

Roberto Badaró

unread,
Oct 1, 2013, 12:02:20 PM10/1/13
to cejug
Já conferiu se não é restrição de tamanho do arquivo?

Roberto Badaró

Chris Allen Barroso

unread,
Oct 1, 2013, 12:12:18 PM10/1/13
to Cejug
Criei um novo projeto é funcionou. Agora tenho q ver porque não esta funcionando no meu projeto.
Provavelmente alguma coisa a mais no meu web.xml
Valeu pela dica pessoal.


--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




From: robert...@gmail.com
Date: Tue, 1 Oct 2013 13:02:20 -0300

Subject: Re: [CEJUG] Problema com componete fileUpload Primefaces

Chris Allen Barroso

unread,
Oct 1, 2013, 1:52:40 PM10/1/13
to Cejug
Problema resolvido.
Não sei porque mas o meu xhml estava com algum problema. E me induzia a qualquer outro problema porq eu longe de imaginar q o problema estava la. Eliminei e criei com o mesmo código e funcionou.

Acredite, fiz colar e copiar o código que la estava no atestado.xhtml para atestado2.xhtml e funcionou.
Provavelmente algum BUG
Obrigado a todos pela ajuda. 



--
Chris Allen Barroso
Analista de Sistemas | Desenvolvedor Java  
Ministério de Planos e Finanças 
@Chravent




From: barros...@hotmail.com
To: ce...@googlegroups.com
Subject: RE: [CEJUG] Problema com componete fileUpload Primefaces
Date: Tue, 1 Oct 2013 16:12:18 +0000
Reply all
Reply to author
Forward
0 new messages