[RESOLVIDO] Primefaces3.2 fileUpload não chama o fileUploadListener

14 respostas
T

Oi galera blz??

Estou querendo salvar imagens no banco de dados, estou usando o fileUpload do primefaces, mas ele não chama o método que esta no fileUploadListene,
o código é esse:

index.xhtml

<p:panel header="Enviar foto(s) do ponto turístico">
                            <h:form enctype="multipart/form-data" >

                                <p:fileUpload  fileUploadListener="#{testeTCCControler.handleFileUpload(event)}"
                                               mode="advanced" 
                                               update="imageUpload"
                                               sizeLimit="[telefone removido]" 
                                               allowTypes="/(\.|\/)(gif|jpe?g|png)$/" 
                                                widgetVar="uploader" />                           


                            </h:form>

o bean é testeTCCControler.java

public void handleFileUpload(FileUploadEvent event)  throws FileNotFoundException, IOException {
        UploadedFile arq = event.getFile();

        this.imagens.setDescricao(arq.getFileName());
        byte[] foto;
        foto = event.getFile().getContents();
        imagens.setFoto(foto);

        GenericDAO genericDAO = new GenericDAO(Imagens.class);
        genericDAO.insert(this.imagens);

        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
alguem pode me ajudar?

14 Respostas

D

vc mapeou o FileUpload Filter no WebXML?

por via das duvidas ai vai…

<!-- ********************** PrimeFaces *************************** -->
    <servlet>
        <servlet-name>Resource Servlet</servlet-name>
        <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
    </servlet>
    <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>
T

daniesouza:
vc mapeou o FileUpload Filter no WebXML?

por via das duvidas ai vai…

<!-- ********************** PrimeFaces *************************** --> <servlet> <servlet-name>Resource Servlet</servlet-name> <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> </servlet> <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>

Ola daniesouza,

quando eu coloco filter web.xml da esse erro:

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TesteTCC]]

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:895)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)

at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)

at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)

at java.util.concurrent.FutureTask.run(FutureTask.java:166)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:679)

Caused by: java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory

at java.lang.Class.getDeclaredFields0(Native Method)

at java.lang.Class.privateGetDeclaredFields(Class.java:2308)

at java.lang.Class.getDeclaredFields(Class.java:1760)

at org.apache.catalina.startup.WebAnnotationSet.getDeclaredFields(WebAnnotationSet.java:452)

at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:257)

at org.apache.catalina.startup.WebAnnotationSet.loadApplicationFilterAnnotations(WebAnnotationSet.java:107)

at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:65)

at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:381)

at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:858)

at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345)

at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)

at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)

at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161)

at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

 11 more

Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)

 25 more

25/09/2012 13:15:00 org.apache.catalina.startup.HostConfig deployDescriptor

SEVERE: Error deploying configuration descriptor /home/tonin/.netbeans/7.2/apache-tomcat-7.0.27.0_base/conf/Catalina/localhost/TesteTCC.xml

java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/TesteTCC]]

at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:898)

at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:871)

at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:615)

at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:649)

at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1585)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)

at java.util.concurrent.FutureTask.run(FutureTask.java:166)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)

at java.lang.Thread.run(Thread.java:679)
D

Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory

cara. esta faltando a lib commons-fileupload…talvez estejam faltando mais algumas libs…

tenta baixar ela que resolve…

http://commons.apache.org/fileupload/download_fileupload.cgi

T

daniesouza:
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileItemFactory

cara. esta faltando a lib commons-fileupload…talvez estejam faltando mais algumas libs…

tenta baixar ela que resolve…

http://commons.apache.org/fileupload/download_fileupload.cgi

Elas estau instaladas a commons-fileupload-1.2.2-bin e commons-io-2.4-bin, elas estão na WEB-INF/lib. Mesmo assim da esse erro.

D

ue… que estranho… tem certeza que esta dando o mesmo erro??

outra coisa… as libs podem estar dentro da pasta LIB… mas precisam estar no classPath do projeto…

elas estao no classpath?? :?:

T

daniesouza:
ue… que estranho… tem certeza que esta dando o mesmo erro??

outra coisa… as libs podem estar dentro da pasta LIB… mas precisam estar no classPath do projeto…

elas estao no classpath?? :?:

Sim elas estão no classpath, adicionei elas como jar na biblioteca, esse erro so ocorre quando coloco o filter no web.xml que da a mensagem de erro.

D

tente deixar deste jeito o web.xml

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

as libs que estou usando

commons-beanutils-1.8.0.jar
commons-digester-1.7.jar
commons-fileupload-1.2.2.jar
commons-io-2.0.1.jar
commons-logging-1.1.1.jar

t+!!

T

Tenho que colocar alguma outra lib além dessas duas ai?

D

veja as libs que coloquei no post acima :stuck_out_tongue:

T
daniesouza:
tonin23:
Tenho que colocar alguma outra lib além dessas duas ai?

veja as libs que coloquei no post acima :P

Blz daniesuza!!

coloquei as libs mas continua tendo erro. rsrs
o meu web.xml está assim

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.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>faces/index.xhtml</welcome-file>
    </welcome-file-list>
    
    <filter-mapping>  
        <filter-name>PrimeFaces FileUpload Filter</filter-name>  
        <servlet-name>Faces Servlet</servlet-name>  
    </filter-mapping>  
    <filter-mapping>  
        <filter-name>PrimeFaces FileUpload Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
    <filter-mapping>  
        <filter-name>PrimeFaces FileUpload Filter</filter-name>  
        <servlet-name>Faces Servlet</servlet-name>  
    </filter-mapping>  
    
</web-app>

tenho q muda alguma coisa nele?

D

cara. pior que o meu projeto esta exatamente assim…

acho que deve ser algum problema no classpath que vc nao conseguiu achar…

tenta dar um clean no projeto… refazer o deploy no servidor… etc etc etc…

T
será que é por que meu web.xml está assim:
....
<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
        
    </servlet-mapping>
....

e tinha q ser assim :

<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

mas quando eu mudo só aparece p texto os componentes do primefaces não aparece.

T

consegui achei o erro não sei se posso chamar de erro mas desse jeito deu certo.

mudei umas configuração do web.xml e pegou ainda bem.\o/

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <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>*.jsf</url-pattern>//mudar aqui
        
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsf</welcome-file> // mudar aqui 
    </welcome-file-list>
    
     <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>

Agora está valeu pela ajuda, resolvido.

D

cara… não faço a menor ideia do que isso tem a ver com o erro que estava dando mas tudo bem…

essa configuração que vc mudou e a que faz o mapeamento do jsf(que faz as sua aplicação usar o framework jsf) … e a da pagina de index.

blz entao… funcionou…

só muda o nome do topico e coloca RESOLVIDO na frente por favor…!!

qualquer coisa tamos ae! :smiley:

Criado 24 de setembro de 2012
Ultima resposta 25 de set. de 2012
Respostas 14
Participantes 2