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>
[code]//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);
}
}[/code]
[code]//web.xml
<?xml version="1.0" encoding="UTF-8"?>
javax.faces.PROJECT_STAGE
Development
Faces Servlet
javax.faces.webapp.FacesServlet
1
Faces Servlet
*.faces
30
index.faces
primefaces.THEME
south-street
Primefaces FileUpload Filter
org.primefaces.webapp.filter.FileUploadFilter
Primefaces FileUpload Filter
Faces Servlet
[/code]
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
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"/>
cara qual versão do JSF voce esta usando?
Dependendo qual for isso aqui não existe send ‘()’
certo
action="#{fileUploadController.send}"
Estou usando a Versão 2.2 e já fiz das duas maneiras e só não funciona o FileUpload.
outro erro
<h:form enctype="multpart/form-data">
o certo é multipart/form-data logo
<h:form enctype="multipart/form-data">
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);
}
}
}
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
[quote=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
[/quote]
Agora meu irmão e botar pra debugar e ver o que ta nullo. Seu erro agora é mais tranquilo ‘nullPointExeception’
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.
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.
[code]
<?xml version="1.0" encoding="UTF-8"?>
javax.faces.PROJECT_STAGE
Development
Faces Servlet
javax.faces.webapp.FacesServlet
1
Faces Servlet
*.faces
30
index.faces
//
PrimeFaces FileUpload Filter
org.primefaces.webapp.filter.FileUploadFilter
PrimeFaces FileUpload Filter
Faces Servlet
//
[/code]
//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
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: [quote]O Artefato CDI foi localizado, mais não há arquivo beans.xml[/quote] 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?
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" />
No seu web.xml, o parametro javax.faces.STATE_SAVING_METHOD está para client? Se estiver, tente como server.
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>