FileUpload PrimeFaces

13 respostas
J
Bom dia estou tentando implementar um FileUpload do PrimeFaces mais não funciona de jeito nenhum o objeto UploadedFile sempre fica null e nem sequer chama o método set, ao verificar o log aparece o seguinte WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which does not have any appropriate constructor. Já adicionei os jars commons-fileupload-1.3.jar e commons-io-2.4.jar e também já configurei o web.xml mais não funciona de jeito nenhum.
//FileUpload        
    <h:form enctype="multpart/form-data">
            <tr>
                <td><b>Anexar arquivo</b></td>
                <td><p:fileUpload value="#{fileUploadController.file}" mode="simple"/></td>
            </tr>
            <tr>
                <tr></tr>
                <td><p:commandButton id="anexar" value="Anexar" ajax="false" action="#{fileUploadController.send()}"/></td>
            </tr>
        </h:form>
        <p:growl id="growl" showDetail="true"/>
    </h:body>
//ManagedBean
@Named(value = "fileUploadController")
@SessionScoped
public class FileUploadController implements Serializable {
    
    private UploadedFile file;
    private String diretorioDestino = "c:\\temp\\";

    public FileUploadController() {
    }
    
    public UploadedFile getFile() {
        return file;
    }

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

    public void send() throws IOException {
        FacesContext fc = FacesContext.getCurrentInstance();
        if (getFile() == null) {
            fc.addMessage(null, new FacesMessage("Erro", "Escolha um arquivo"));
        } else {
            upload(getFile().getFileName(), getFile().getInputstream());
            fc.addMessage(null, new FacesMessage("Sucesso", "arquivo enviado"));
        }
    }

    public void upload(String fileName, InputStream in) {
        try {
            OutputStream out = new FileOutputStream(new File(diretorioDestino + fileName));
            int reader = 0;
            byte[] bytes = new byte[(int) getFile().getSize()];
            try {
                while ((reader = in.read(bytes)) != -1) {
                    out.write(bytes, 0, reader);
                }
                in.close();
                out.flush();
                out.close();
            } catch (IOException ex) {
                Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (FileNotFoundException ex) {
            Logger.getLogger(FileUploadController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
//web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.faces</welcome-file>
    </welcome-file-list>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>south-street</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>Faces Servlet</servlet-name>
    </filter-mapping>
</web-app>

13 Respostas

M

Amigo já pensou em usar actionListener ao invés do action? Acredito que irá funcionar

Caso tenha maiores duvidas consulte o portal do primeFaces

http://www.primefaces.org/showcase/ui/fileUploadSimple.jsf

J

Bom dia já vi sim o ShowCase do PrimeFaces e já tentei também com o actionListener, porém ao acionar o botão do FileUpload o evento não é disparado e não consigo nem pegar o event.getFile() e nem setar o arquivo no UploadedFile que sempre fica null. Mesmo se eu colocar um valor que não existe na propriedade value ou fileUploadListener não da erro pq o método não esta sendo chamado veja abaixo código teste que fiz utilizando o actionListener:

public void fileUp(FileUploadEvent event) { FacesContext fc = FacesContext.getCurrentInstance(); fc.addMessage(null, new FacesMessage("Mensagem", "Arquivo escolhido "+ event.getFile().getFileName())); }

<h:form enctype="multpart/form-data"> <tr> <td><b>Anexar arquivo</b></td> <td><p:fileUpload styleClass="campo" fileUploadListener="#{fileUploadController.fileUp(event)}" label="Escolher Arquivo" mode="advanced" auto="true"/></td> </tr> <tr> <tr></tr> <td><p:commandButton id="anexar" value="Anexar" ajax="false" action="#{fileUploadController.send()}"/></td> </tr> </h:form> <p:growl id="growl" showDetail="true"/>

M

cara qual versão do JSF voce esta usando?
Dependendo qual for isso aqui não existe send ‘()’
certo

action="#{fileUploadController.send}"
J

Estou usando a Versão 2.2 e já fiz das duas maneiras e só não funciona o FileUpload.

M

outro erro

<h:form enctype="multpart/form-data">

o certo é multipart/form-data logo

<h:form enctype="multipart/form-data">
M

Eu faria assim caso nao funcione verifique mapeamentos do projeto

<h:form enctype="multipart/form-data">  
            <tr>  
                <td><b>Anexar arquivo</b></td>  
                <td><p:fileUpload value="#{fileUploadController.file}" mode="simple"/></td>  
            </tr>  
            <tr>  
                <tr></tr>  
                <td><p:commandButton id="anexar" value="Anexar" ajax="false" actionListener="#{fileUploadController.send}"/></td>  
            </tr>  
        </h:form>  
        <p:growl id="growl" showDetail="true"/>  
    </h:body>
public class FileUploadController {  
  
    private UploadedFile file;  
  
    public UploadedFile getFile() {  
        return file;  
    }  
  
    public void setFile(UploadedFile file) {  
        this.file = file;  
    }  
  
    public void send(){  
        if(file != null) {  
            FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");  
            FacesContext.getCurrentInstance().addMessage(null, msg);  
        }  
    }  
}
J

Agora estou recebendo o erro abaixo:

FATAL: JSF1073: javax.faces.FacesException obtido durante o processamento de APPLY_REQUEST_VALUES 2: UIComponent-ClientId=, Message=null FATAL: javax.faces.FacesException at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.NullPointerException at org.primefaces.component.fileupload.FileUploadRenderer.decodeSimple(FileUploadRenderer.java:54) at org.primefaces.component.fileupload.FileUploadRenderer.decode(FileUploadRenderer.java:45) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:836) at javax.faces.component.UIInput.decode(UIInput.java:771) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1228) at javax.faces.component.UIInput.processDecodes(UIInput.java:676) at javax.faces.component.UIForm.processDecodes(UIForm.java:225) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) ... 35 more

M

josimarsis:
Agora estou recebendo o erro abaixo:

FATAL: JSF1073: javax.faces.FacesException obtido durante o processamento de APPLY_REQUEST_VALUES 2: UIComponent-ClientId=, Message=null FATAL: javax.faces.FacesException at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) at java.lang.Thread.run(Thread.java:724) Caused by: java.lang.NullPointerException at org.primefaces.component.fileupload.FileUploadRenderer.decodeSimple(FileUploadRenderer.java:54) at org.primefaces.component.fileupload.FileUploadRenderer.decode(FileUploadRenderer.java:45) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:836) at javax.faces.component.UIInput.decode(UIInput.java:771) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1228) at javax.faces.component.UIInput.processDecodes(UIInput.java:676) at javax.faces.component.UIForm.processDecodes(UIForm.java:225) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) ... 35 more

Agora meu irmão e botar pra debugar e ver o que ta nullo. Seu erro agora é mais tranquilo ‘nullPointExeception’

J

Ta muito estranho isso aqui coloquei para debbugar e esta acontecendo o seguinte, escolho o arquivo e aciono o commandButton para fazer post dai ao envés da propriedade value="#{fileUploadController.file}" do FileUpload chamar o setFile do meu managedBean ele ta chamando o getFile e por isso o UploadedFile continua null.

J
Olá pessoal já não sei mais o que fazer, o FileUpload do PrimeFaces não funciona, já tentei de tudo e nada, mesmo reproduzindo o exemplo do ShowCase do primeFaces não funciona e estou recebendo a exceção abaixo. As bibliotecas commons-io-2.4.jar e commons-fileupload-1.3.jar estão adicionadas tbm já acrescentei no web.xml o código recomendado em diversos tutoriais que vi na net. Estou utilizando Netbeans 7.3.1 + Glassfish 4.0 + Primefaces 3.5.
<!-- web.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.faces</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.faces</welcome-file>
    </welcome-file-list>
     //<!-- CODIGO ADICIONADO -->
    <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>
    </filter-mapping>
       //<!-- FIM CODIGO ADICIONADO -->
</web-app>
//LOG do GlassFish + Exceção lançada ao executar o fileUpload
WARNING:   Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled
WARNING:   Class 'javax.ejb.PrePassivate' not found, interception based on it is not enabled
INFO:   Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto '/upload'
WARNING:   WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which does not have any appropriate constructor.
INFO:   Running on PrimeFaces 3.5
INFO:   Loading application [upload] at [/upload]
INFO:   Loading application upload done in 15.334 ms
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto '/helpdesk'
WARNING:   WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which does not have any appropriate constructor.
INFO:   Running on PrimeFaces 3.2
INFO:   Loading application [helpdesk] at [/helpdesk]
INFO:   Loading application helpdesk done in 5.694 ms
INFO:   GlassFish Server Open Source Edition  4.0  (89) startup time : Felix (10.999ms), startup services(24.019ms), total(35.018ms)
INFO:   Initiating Jersey application, version Jersey: 2.0 2013-05-03 14:50:15...
INFO:   Grizzly Framework 2.3.1 started in: 9ms - bound to [/0.0.0.0:7.676]
INFO:   Registered com.sun.enterprise.glassfish.bootstrap.osgi.EmbeddedOSGiGlassFishImpl@25959a as OSGi service registration: org.apache.felix.framework.ServiceRegistrationImpl@162deb1.
INFO:   JMXStartupService has started JMXConnector on JMXService URL service:jmx:rmi://TI01:8686/jndi/rmi://TI01:8686/jmxrmi
INFO:   Created HTTP listener http-listener-1 on host/port 0.0.0.0:8080
INFO:   Grizzly Framework 2.3.1 started in: 16ms - bound to [/0.0.0.0:8.080]
INFO:   Created HTTP listener http-listener-2 on host/port 0.0.0.0:8181
INFO:   Grizzly Framework 2.3.1 started in: 18ms - bound to [/0.0.0.0:8.181]
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   visiting unvisited references
INFO:   Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto '/upload'
WARNING:   WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which does not have any appropriate constructor.
INFO:   Running on PrimeFaces 3.5
INFO:   Loading application [upload] at [/upload]
INFO:   upload foi implantado com sucesso em 3.875 milissegundos.
FATAL:   JSF1073: javax.faces.FacesException obtido durante o processamento de APPLY_REQUEST_VALUES 2: UIComponent-ClientId=, Message=null
FATAL:   javax.faces.FacesException
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:86)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
	at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NullPointerException
	at org.primefaces.component.fileupload.FileUploadRenderer.decodeSimple(FileUploadRenderer.java:56)
	at org.primefaces.component.fileupload.FileUploadRenderer.decode(FileUploadRenderer.java:47)
	at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:836)
	at javax.faces.component.UIInput.decode(UIInput.java:771)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1228)
	at javax.faces.component.UIInput.processDecodes(UIInput.java:676)
	at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223)
	at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1223)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:929)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
	... 35 more
J

Olá Galera descobri que o NullPointerException que esta ocorrendo ao executar o commandButton do FileUpload esta ocorrendo por causa de um bug no GlassFish 4.0, vejam o log abaixo. Tentei com os servidores GlassFish 3.1, GlassFish 3.1.2.2 e JBoss AS 7.1.1, porém os nos ManagedBeans que estão utilizando CDI aparece a seguinte mensagem:

O Artefato CDI foi localizado, mais não há arquivo beans.xml
e o Apache Tomcat 7.0.34 nem reconhece as anotações do CDI.

INFO: Grizzly Framework 2.3.1 started in: 7ms - bound to [/0.0.0.0:3.700] INFO: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry SEVERE: Application previously deployed is not at its original location any more: file:/D:/Java/Projetos/Netbeans/upload/build/web/ SEVERE: Application previously deployed is not at its original location any more: file:/D:/Java/Projetos/Netbeans/testeup/build/web/ INFO: this.makeModuleFor(org.glassfish.main.web.glue, null) returned OSGiModuleImpl:: Bundle = [org.glassfish.main.web.glue [350]], State = [READY] INFO: this.makeModuleFor(org.glassfish.web.javax.servlet.jsp, null) returned OSGiModuleImpl:: Bundle = [org.glassfish.web.javax.servlet.jsp [209]], State = [READY] INFO: visiting unvisited references INFO: SEC1002: Security Manager is OFF. INFO: SEC1010: Entering Security Startup Service INFO: SEC1143: Loading policy provider com.sun.enterprise.security.provider.PolicyWrapper. INFO: SEC1011: Security Service(s) Started Successfully INFO: Created HTTP listener http-listener-1 on host/port 0.0.0.0:8080 INFO: Created HTTP listener http-listener-2 on host/port 0.0.0.0:8181 INFO: Created HTTP listener admin-listener on host/port 0.0.0.0:4848 INFO: Created virtual server server INFO: Created virtual server __asadmin INFO: Setting JAAS app name glassfish-web INFO: Virtual server server loaded default web module INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: visiting unvisited references INFO: WELD-000900 2.0.0 (SP1) INFO: HV000001: Hibernate Validator 5.0.0.Final //***************************CAUSA DO NullPointerException********************************* WARNING: Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled WARNING: Class 'javax.ejb.PrePassivate' not found, interception based on it is not enabled INFO: Inicializando Mojarra 2.2.0 ( 20130502-2118 https://svn.java.net/svn/mojarra~svn/tags/2.2.0@11930) para o contexto '/helpdesk' WARNING: WELD-001529 An InjectionTarget implementation is created for a class org.primefaces.context.PrimePartialViewContextFactory which does not have any appropriate constructor. INFO: Running on PrimeFaces 3.2 INFO: Loading application [helpdesk] at [/helpdesk] INFO: Loading application helpdesk done in 19.488 ms SEVERE: Application previously deployed is not at its original location any more: file:/D:/Java/Projetos/Netbeans/helpdesk-old/build/web/ //***************************FIM CAUSA DO NullPointerException********************************* INFO: GlassFish Server Open Source Edition 4.0 (89) startup time : Felix (10.956ms), startup services(22.317ms), total(33.273ms) INFO: Created HTTP listener http-listener-1 on host/port 0.0.0.0:8080
Alguém tem alguma solução mesmo que não seja com o GlassFish?

J

segue abaixo um exemplo:

package br.com.comprev.sisprev.bean;

import java.io.File;
import java.io.FileOutputStream;
import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletResponse;

import org.primefaces.event.FileUploadEvent;

@ManagedBean(name = "fileUploadMB")
@ViewScoped
public class FileUploadMB implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void fileUploadAction(FileUploadEvent event) {
		
		try {
			
			ExternalContext externalContext = FacesContext.getCurrentInstance()
					.getExternalContext();
			HttpServletResponse response = (HttpServletResponse) externalContext
					.getResponse();

			FacesContext aFacesContext = FacesContext.getCurrentInstance();
			ServletContext context = (ServletContext) aFacesContext
					.getExternalContext().getContext();

			String realPath = context.getRealPath("/");
			//String realPath = "C://";

			
			// Aqui cria o diretorio caso não exista
			File file = new File(realPath + "/fotos/");
			file.mkdirs();

			byte[] arquivo = event.getFile().getContents();
			String caminho = realPath + "/fotos/"
					+ event.getFile().getFileName();

			// esse trecho grava o arquivo no diretório
			FileOutputStream fos = new FileOutputStream(caminho);
			fos.write(arquivo);
			fos.close();

		} catch (Exception ex) {
			System.out.println("Erro no upload de imagem" + ex);
		}
		
		
	}

}
<p:fileUpload id="upload"
					fileUploadListener="#{anexoArquivoBean.fileUploadAction}" auto="true" />
T

No seu web.xml, o parametro javax.faces.STATE_SAVING_METHOD está para client? Se estiver, tente como server.

&lt;context-param&gt;
  &lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
  &lt;param-value&gt;server&lt;/param-value&gt;
&lt;/context-param&gt;
Criado 31 de julho de 2013
Ultima resposta 5 de ago. de 2013
Respostas 13
Participantes 4