FileUpLoad Primefaces

3 respostas
J

Opa…

Estou com um problema que nao consigo fazer com o que o fileupload do prime execute o meu bean, nao importa o que eu já tenha feito, nao acontece nada…

meu jsf

<h:form id="tf" enctype="multipart/form-data">
            <p:fileUpload label="Procurar..."
                          id="enviaProjeto"
                          fileUploadListener="#{gravaAbreChamados.adicionarArquivo}"/>
            <p:growl id="messages" showDetail="true"/> 
        </h:form>

meu bean

public void AdicionarArquivo(FileUploadEvent event) throws SQLException, FileNotFoundException {
        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
        FacesContext.getCurrentInstance().addMessage(null, msg);

meu web.xml

<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.PARTIAL_STATE_SAVING</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>redmond</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>
            1800
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
    <error-page>
        <exception-type>javax.faces.application.ViewExpiredException</exception-type>
        <location>/faces/paginaExpirada.xhtml</location>
    </error-page>
    <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>D:/temp</param-value>
        </init-param>
        <init-param>
            <param-name>thresholdSize</param-name>
            <param-value>10000</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>
</web-app>

chega a gravar os arquivos upados pra dentro da pasta que eu coloco configurado no meu web.xml, mas nao chama a classe.

Já tenho as libs commons-io-2.4.jar e a commons-fileupload-1.2.2.jar adicionadas.

Se alguem puder me ajudar???

3 Respostas

Rodrigo_Sasaki

Algo aí está estranho. O método no seu bean é AdicionarArquivo e na EL está adicionarArquivo.

Java é case sensitive, é possível que ele nem esteja encontrando o método.

J

Na verdade era uma opçao que faltava no web.xml

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

Agora o meu problema está com o tipo de browser que executa o meu JSF.
Se eu executar com o IE ele pega o caminho do arquivo assim: “C:\Users\gti\Desktop\tela.jpg”
mas se eu executar no Chrome o event.getFileName() tras assim: “tela.jpg”

Existe alguma forma que eu consiga pegar esse caminho padrão indiferente do browser?

Obrigado!

J

Alguem sabe como posso resolver esse problema de browser?

Obrigado

Criado 17 de outubro de 2012
Ultima resposta 18 de out. de 2012
Respostas 3
Participantes 2