Mojarra 2.0.3, FileUpload, PrimeFaces, JSF 2.0

9 respostas
rafaelvascon

Olá,

Estou fazendo um projeto em JSF 2.0 usando como servidor o GlassFish 3v e usando o PrimeFaces 2.2-M1-SNAPSHOT.
O problema:
Usando esse exemplo: http://code.google.com/p/primefaces/source/browse/examples/trunk/showcase/src/main/webapp/ui/fileUploadAuto.xhtml?r=3763

<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" auto="true"
                                                allowTypes="*.jpg;*.png;*.gif;" description="Images"/>
Que usa esse bean
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.primefaces.event.FileUploadEvent;

public class FileUploadController {
        
        private Logger logger = Logger.getLogger(FileUploadController.class.getName());

        public void handleFileUpload(FileUploadEvent event) {
                logger.log(Level.INFO, "Uploaded: {0}", event.getFile().getFileName());

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

No web.xml estou usando a seguinte configuração para o upload:

<filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
        <init-param>
            <param-name>thresholdSize</param-name>
            <param-value>51200</param-value>
        </init-param>
        <init-param>
            <param-name>uploadDirectory</param-name>
            <param-value>C:\temp</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

Na página a tag fileUpload não está realmente acessando o bean através do parametro: fileUploadListener="#{fileUploadController.handleFileUpload}"
Por que? Andei pesquisando, e vi que a solução seria usar no Servidor o Mojarra 2.0.3
Como instalar o mojarra 2.0.3 num servidor glassfish?
Ou melhor: qual servidor já vem com ele instalado?

9 Respostas

rafaelvascon

Um amigo também está usando o fileUpload mas com a biblioteca primeFaces-2.2-RC1. Sem precisar instalar o mojarra 2.0.3
Vou testar.

comedor_de_folhas

rafael, estou tendo problemas com o fileupload tmbm , quando tento fazer o upload de um video de uns 100 mb, da uma msg de erro out of memory, estou usando o primefaces 2.2rc2 e a lib do jsf 2.0 (é a que o netbeans insere automaticamente) devo tentar atualizar essa lib do jsf??

vc conseguiu resolver o seu problema??

vlwsss

leodouglas

vc não está conseguindo acessar o metodo handleFileUpload ou o controller fileUploadController?

Ele está configurado no faces-config.xml? ou vc está usando por anotações?

Takeshi91

comedor_de_folhas:
rafael, estou tendo problemas com o fileupload tmbm , quando tento fazer o upload de um video de uns 100 mb, da uma msg de erro out of memory, estou usando o primefaces 2.2rc2 e a lib do jsf 2.0 (é a que o netbeans insere automaticamente) devo tentar atualizar essa lib do jsf??

vc conseguiu resolver o seu problema??

vlwsss

Acho que o seu problema é estar tentando alocar o arquivo num local com espaço indisponível.

Takeshi91

A minha FilUpload dá IO ERROR

Tentei implementar a Filter do FileUpload, mas ai o servidor nem consegue implantar o sistema.

Estou usando Tomcat 6.0.29.

Está realmente dando uma dor de cabeça.

E

Se for alterar para 2.0.3 já atualize para 2.0.4 ou 2.1

http://javaserverfaces.java.net/download.html

E jogue jsf-api e jsf-impl no teu server.

caarlos0

comedor_de_folhas:
rafael, estou tendo problemas com o fileupload tmbm , quando tento fazer o upload de um video de uns 100 mb, da uma msg de erro out of memory, estou usando o primefaces 2.2rc2 e a lib do jsf 2.0 (é a que o netbeans insere automaticamente) devo tentar atualizar essa lib do jsf??

vc conseguiu resolver o seu problema??

vlwsss

Ele está carregando o objeto file com o seu arquivo pra memória, e tá usando toda a memória disponível.
Tente configurar seu servidor para usar mais RAM.

Provavelmente é alguma flag na inicialização do glassfish.

E não, não tem nada a ver com espaço em disco.

getAdicted
rafaelvascon:
Olá,

Estou fazendo um projeto em JSF 2.0 usando como servidor o GlassFish 3v e usando o PrimeFaces 2.2-M1-SNAPSHOT.
O problema:
Usando esse exemplo: http://code.google.com/p/primefaces/source/browse/examples/trunk/showcase/src/main/webapp/ui/fileUploadAuto.xhtml?r=3763

<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" auto="true"
                                                allowTypes="*.jpg;*.png;*.gif;" description="Images"/>
Que usa esse bean
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

import org.primefaces.event.FileUploadEvent;

public class FileUploadController {
        
        private Logger logger = Logger.getLogger(FileUploadController.class.getName());

        public void handleFileUpload(FileUploadEvent event) {
                logger.log(Level.INFO, "Uploaded: {0}", event.getFile().getFileName());

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

No web.xml estou usando a seguinte configuração para o upload:

<filter>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
        <init-param>
            <param-name>thresholdSize</param-name>
            <param-value>51200</param-value>
        </init-param>
        <init-param>
            <param-name>uploadDirectory</param-name>
            <param-value>C:\temp</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>PrimeFaces FileUpload Filter</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
    </filter-mapping>

Na página a tag fileUpload não está realmente acessando o bean através do parametro: fileUploadListener="#{fileUploadController.handleFileUpload}"
Por que? Andei pesquisando, e vi que a solução seria usar no Servidor o Mojarra 2.0.3
Como instalar o mojarra 2.0.3 num servidor glassfish?
Ou melhor: qual servidor já vem com ele instalado?

Olá amigo,

Acho que você se esqueceu de anotar o Bean, não?:

@ManagedBean
public class FileUploadController {
        
        private Logger logger = Logger.getLogger(FileUploadController.class.getName());

        public void handleFileUpload(FileUploadEvent event) {
                logger.log(Level.INFO, "Uploaded: {0}", event.getFile().getFileName());

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

[]'s

marcusco

Estou com o mesmo problema…Alguém encontrou a solução?

Criado 7 de dezembro de 2010
Ultima resposta 9 de fev. de 2012
Respostas 9
Participantes 8