1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Primefaces 5 fileUpload não invoca método

Bem, estou tentando utilizar o fileUpload do primefaces e sem sucesso. O método não é chamado. Abaixo o pom.xml

        <!-- Primefaces -->

        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>${primefaces.version}</version>
        </dependency>

        <!-- File Uploader -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>

Utilizo 3 filtro em cadeia: o Primefaces FileUpload Filter, o Spring Security, e o PrettyFaces.

web.xml:

    <!-- File Uploader -->

    <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>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>

Meu form está:

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

Aqui está minha EL:

            <p:fileUpload fileUploadListener="#{infoBean.handleFileUpload}"
                cancelLabel="Cancelar" uploadLabel="Enviar"
                invalidFileMessage="Tipo de arquivo inválido"
                invalidSizeMessage="Tamanho de imagem excedido" mode="advanced"
                update="tabela_documentos" label="Enviar Documento"
                allowTypes="/(\.|\/)(pdf)$/">
            </p:fileUpload>

E aqui o método que não é chamado:

public void handleFileUpload(FileUploadEvent event) throws IOException {
        UploadedFile file = event.getFile();
        File targetFolder = new File("/home/void/uploads/");
        InputStream inputStream = event.getFile().getInputstream();
        String photoName = UUID.randomUUID().toString();
        File photo = new File(targetFolder, photoName);
        OutputStream out = new FileOutputStream(photo);
        int read = 0;
        byte[] bytes = new byte[1024];
        while ((read = inputStream.read(bytes)) != -1) {
            out.write(bytes, 0, read);
        }
        inputStream.close();
        out.flush();
        out.close();
        Documento doc = new Documento();
        doc.setInfo(info);
        doc.setPath("/home/void/uploads/"+photoName);
        info.addDocumento(doc);
    }

Não recebo nenhum erro. Testei com as seguintes versões do primefaces: 3.5, 4.0, 5.0, 5.1 A única que funcionou foi a 3.5 Alguém sabe o porque?

  • Tive o mesmo problema uma vez e era incompatibilidade da versão do Glassfish com a do Primefaces. Qual o servidor (versão também) de aplicação que você usa?

    Heitor   15 de out de 2014
  • Uso o tomcat 7.042

    Alan Victor Lanzoni Rodrigues   15 de out de 2014
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags primefaces ou faça a sua própria pergunta.