PRIMEFACES 3.0 - FileUpload NÃO FUNCIONA NEM COM REZA BRAVA[RESOLVIDO]

5 respostas
K

Boa tarde pessoal do fórum…

Estou com um sério problema que não consigo resolver de jeito maneira alguma…

Estou utilizando o PRIMEFACES 3.0, já fiz a configuração, já tentei todos os métodos e nada de conseguir isso fazer funciona…

Meu arquivo web.xml

<?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>
    <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>
    <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>
</web-app>

Meu arquivo teste.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:p="http://primefaces.org/ui"> 
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        
        
    <h:form enctype="multipart/form-data">  
  
        <p:fileUpload fileUploadListener="#{EnviarXLS.handleFileUpload}"/>
        
  
    </h:form>                    
    </h:body>
</html>

Meu arquivo EnviarXls.java

package controle;

/**
 *
 * @author Ulisses
 */
import javax.faces.application.FacesMessage;  
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;  
  
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;  

@ManagedBean(name = "EnviarXLS")
@RequestScoped
public class EnviarXLS {  
  
    private UploadedFile file;  
  
    public UploadedFile getFile() {  
        return file;  
    }  
  
    public void setFile(UploadedFile file) {  
        this.file = file;  
    }  
  
    public void upload() {  
        FacesMessage msg = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }  
    
    public void handleFileUpload(FileUploadEvent event) {  
        FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
    }   
}

Na verdade fiz esse apenas de teste para não ficar alterando muito a função principal que na verdade é pegar um arquivo no formato .xls e converter para um arranjo de acordo com as funções que utilizei… que segue abaixo o exemplo da função

public void CriaLista(FileUploadEvent event) throws IOException {

        UploadedFile arquivo = event.getFile();
        HSSFWorkbook wb = new HSSFWorkbook(arquivo.getInputstream());
        HSSFSheet sh = wb.getSheetAt(1);
        
        for (linha = sh.getFirstRowNum()+1; linha <= sh.getLastRowNum(); linha++) {
            
            maximo = 0x0.0000000000001P-1022;
            minimo = 0x1.fffffffffffffP+1023;
            media = 0;
            amplitude = 0;
            
            HSSFRow clinha = sh.getRow(linha);
            for (int coluna = clinha.getFirstCellNum()+1; coluna < clinha.getLastCellNum(); coluna++) 
            {
                    HSSFCell celula = clinha.getCell(coluna);
                    media += celula.getNumericCellValue();
                    if (celula.getNumericCellValue() > maximo)
                    {
                        maximo = celula.getNumericCellValue();
                    }
                    if (celula.getNumericCellValue() < minimo)
                    {
                        minimo = celula.getNumericCellValue();
                    }
                                            
            }
            media = media /(clinha.getLastCellNum()-1);
            amplitude = maximo - minimo;
            listaVariaveis.add(new Variaveis(linha, media, amplitude,false));
        }
    
    }

[b]Minha Libraries:
-primefaces-3.0.jar
-commons-fileupload-1.2.2.jar
-commons-io.2.0.1.jar
-poi-3.7-20101029.jar
-JDK 1.7
-FlassFish Server 3.1 [/b]

Mas isso não é o importante, o caso é que de maneira alguma eu consigo fazer o FileUpload funcionar já tentei várias configurações jeitos, métodos, função… teste daqui teste dali e nada da certo… alguém poderia me ajudar por favor… ele não da um feedback não mostra a mensagem do erro… ja li vários post e indicações de outros exemplo que o pessoal deu aqui no fórum mais mesmo assim não funcionou…

Obrigado…

5 Respostas

E

Importou commons-io.jar e commons-fileupload.jar ?

A

Aumente o Scopo do seu ManagedBean.

Utilize @ViewScoped ou @SessionScoped.

O @ResquestScoped não salva o estado dos seus dados e por isso não faz o upload.

K

[color=darkblue][i]Sim já importei eles em minha biblioteca estou utilizando…

primefaces-3.0.jar
commons-fileupload-1.2.2.jar
commons-io.2.0.1.jar
poi-3.7-20101029.jar
JDK 1.7
FlassFish Server 3.1 [/i][/color]

Aumente o Scopo do seu ManagedBean.

Utilize @ViewScoped ou @SessionScoped.

O @ResquestScoped não salva o estado dos seus dados e por isso não faz o upload.

[color=darkblue]Aumentei o Scopo mais mesmo assim ainda não funcionou[/color]

A

Está lançando algum erro agora??

Eu uso da seguinte maneira:

<p:fileUpload id="fileupload" fileUploadListener="#{uploadBean.upload}" sizeLimit="500000" widgetVar="fileupload" multiple="true" label="Selecionar" allowTypes="/(\.|\/)(xml)$/" update="growl" mode="advanced" />

K

Boa noite pessoal… Obrigado a todos que deram uma ajuda para a resolução do problema!!!

Consegui resolver… segue abaixo as classes como ficaram… fiz as alterações que vocês indicaram e acho que deu certo depois de algumas mudanças

ConveteModVariaveis

package controle;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import modelo.Variaveis;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author Ulisses
 */
@ManagedBean(name = "ConverteModVariaveis")
@SessionScoped
public class ConverteModVariaveis implements Serializable{
    
    public List<Variaveis> listaVariaveis = new ArrayList<Variaveis>();
    Variaveis Atrib = new Variaveis();
    int linha;
    double maximo, minimo, media,amplitude;

    public double getMaximo() {
        return maximo;
    }
    public List<Variaveis> getLista() {
        return listaVariaveis;
    }

    public void setLista(List<Variaveis> list) {
        this.listaVariaveis = list;
    }

    public void CriaLista(FileUploadEvent event) throws IOException {

        FacesMessage msg = new FacesMessage("Arquivo", event.getFile().getFileName() + " foi enviado com sucesso.");  
        FacesContext.getCurrentInstance().addMessage(null, msg);  
        
        UploadedFile arquivo = event.getFile();
        HSSFWorkbook wb = new HSSFWorkbook(arquivo.getInputstream());
        HSSFSheet sh = wb.getSheetAt(0);
        
        for (linha = sh.getFirstRowNum()+1; linha <= sh.getLastRowNum(); linha++) {
            
            maximo = 0x0.0000000000001P-1022;
            minimo = 0x1.fffffffffffffP+1023;
            media = 0;
            amplitude = 0;
            
            HSSFRow clinha = sh.getRow(linha);
            for (int coluna = clinha.getFirstCellNum()+1; coluna < clinha.getLastCellNum(); coluna++) 
            {
                    HSSFCell celula = clinha.getCell(coluna);
                    media = media + celula.getNumericCellValue();
                    if (celula.getNumericCellValue() > maximo)
                    {
                        maximo = celula.getNumericCellValue();
                    }
                    if (celula.getNumericCellValue() < minimo)
                    {
                        minimo = celula.getNumericCellValue();
                    }
                                            
            }
            media = media /clinha.getLastCellNum();
            amplitude = maximo - minimo;
            listaVariaveis.add(new Variaveis(linha, media, amplitude,false));
        }
    
    }
}

graficovariavel.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/core"  
      xmlns:p="http://primefaces.org/ui"> 
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        
        
    <h:form enctype="multipart/form-data">  
  
        <p:fileUpload id="fileupload" fileUploadListener="#{ConverteModVariaveis.CriaLista}" widgetVar="fileupload"
                      label="Selecionar"  uploadLabel="Enviar" cancelLabel="Cancelar"
                      
                      update="growl,DTVariaveis,MediaTeste" mode="advanced" />
        
        <p:growl id="growl" showDetail="true" life="3000"/>  
        
        <h:outputText id="MediaTeste" value="#{ConverteModVariaveis.maximo}" />
        <p:dataTable id="DTVariaveis" var="DTVvalor" value="#{ConverteModVariaveis.lista}">
            <p:column>
                <f:facet name="header"> 
                    <h:outputText value="Posição" />
                </f:facet>
                <h:outputText value="#{DTVvalor.posicao}" />
            </p:column>
                <p:column>
                <f:facet name="header">
                    <h:outputText value="Média" />
                </f:facet>
                <h:outputText value="#{DTVvalor.media}" />
            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputText value="Amplitude" />
                </f:facet>
                <h:outputText value="#{DTVvalor.variabilidade}" />
            </p:column>
            
        </p:dataTable>
  
    </h:form>                    
    </h:body>
</html>
Criado 10 de janeiro de 2012
Ultima resposta 10 de jan. de 2012
Respostas 5
Participantes 3