FileUpload do PrimeFaces não chama fileUploadListener

Eaew gente boa, fmz?

FileUpload do PrimeFaces não chama fileUploadListener, alguem sabe porque???

<p:fileUpload auto=“true” allowTypes=".jpg;.png;*.gif;" description=“Imagens” sizeLimit=“300000” fileUploadListener="#{beanAdmin.handleFileUpload(event)}"/>

public void salvarImagem(File arquivo) {
    if (arquivo != null) {
        System.out.println(arquivo.getName());
    } else {
        System.out.println("dsasa");
    }
}

Altere a configuração do STATE_SAVING_METHOD para server.

Para configurar esta opção basta colocar o código abaixo no arquivo web.xml:

&lt;context-param&gt; 
&lt;description&gt; 
State saving method: ?client? or ?server? (= default) See 
JSF Specification 2.5.2 
&lt;/description&gt; 
&lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt; 
&lt;param-value&gt;server&lt;/param-value&gt; 
&lt;/context-param&gt;

Veja os pos e contras.

Diferença:

Método server

há um maior consumo de memória no lado servidor pois o estado esta sendo mantido na sessão por usuário;
problemas com o back-button do browser (é necessário mais consumo de memória para resolver este problema);
baixo consumo de banda na rede;
baixo consumo de memória no cliente;
uso de cpu no servidor é baixo;
clustering ? mover a sessão para um outro nó do cluster (muitos dados na sessão);
melhora comunição via AJAX pois não é preciso reenviar o estado da view ao servidor;
páginas carregam mais rapidamente (ou pode-se dizer normalmente?);

Método client

menos uso da session e consequentemente menos consumo de memória no lado servidor;
sem consumo de memória entre requests;
corrige problemas de refresh (tecla F5) e botão voltar (back button) do browser;
resolve problemas de concorrência;
melhora escalabilidade da aplicação;
alto consumo de banda da rede;
maior overhead de cpu no servidor e cliente;
maior consumo de memória no lado cliente;
problemas de segurança;
excelente na fase de desenvolvimento pois conseguimos manter o estado da view mesmo depois de restartar o servidor;
páginas carregam ligeiramente mais lentas (isso depende muito da complexidade e quantidade de componentes na página);

Se resolver poe o titulo como resolvido.

consiguiram resolver ?

Eu abandonei fazer via primefaces, fiz usando jsf mesmo, faz uma pesquisa por upload com jsf que vc vai conseguir.

Pra fazer upload com Primefaces e necessário adicionar algumas configurações no web.xml
Caso não tenha feito…

&lt;filter&gt;
   &lt;filter-name&gt;PrimeFaces FileUpload Filter&lt;/filter-name&gt;
   &lt;filter-class&gt;org.primefaces.webapp.filter.FileUploadFilter&lt;/filter-class&gt;
&lt;/filter&gt;	
&lt;filter-mapping&gt;
   &lt;filter-name&gt;PrimeFaces FileUpload Filter&lt;/filter-name&gt;
    &lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
&lt;/filter-mapping&gt;

Galera já fiz uma vez o upload do primefaces e do rich faces funcionado inclusive vou posta no meu blog, só que estou tendo problema com o primefaces
upload + o seam não consegui fazer então fiz logo com richfaces, pois a empresa não espera

Esta tudo mapeado, pois como disse já tinha feito uma antes, mais com o seam ele que controla os filtros, e o prime não chega nem a chamar o metodo fileListener(UploadFile event)… não entendi ainda vou pesaquisar sobre,
caso ache a resposta posto aqui… se alguem também achar seria bom :slight_smile:

Voc encontrou a resposta para que ele chamasse o metodo listener do fileupload ?

Sim, mais você ta usando jsf2 ou jsf1.2 ? e posta seu código!


<p:fileUpload
					fileUploadListener="#{beanAdmin.handleFileUpload}"
					update="mensagens" multiple="true"  />	

tente assm

[quote=luirton]Esta tudo mapeado, pois como disse já tinha feito uma antes, mais com o seam ele que controla os filtros, e o prime não chega nem a chamar o metodo fileListener(UploadFile event)… não entendi ainda vou pesaquisar sobre,
caso ache a resposta posto aqui… se alguem também achar seria bom :)[/quote]

Bom dia pessoal,

Estou a 3 dias tentando fazer o upload automático do primefaces, pesquisei nos fóruns, mas nenhuma das alternativa e soluções me adiantaram, pois o upload não chamou o método do java. Atualmente os meu arquivos estão com a seguinte configuração e códigos:

web.xml ( Parte do código xml )


<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>  
      <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification     2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
 <filter>

FileUploadController.java

import java.io.Serializable;
import java.util.logging.Logger;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import org.primefaces.event.FileUploadEvent;

@ManagedBean(name="fileUploadController")
@RequestScoped
public class FileUploadController implements Serializable{

	private static final long serialVersionUID = 1L;
	private static final int BUFFER_SIZE = 6124;

	  private Logger logger = Logger.getLogger(FileUploadController.class.getName());  
	  
    /** Creates a new instance of UploadBean */
    public FileUploadController() {
    
    }

    public void handleFileUpload(FileUploadEvent event){
    	
    	System.out.println("Deu certo");
    }    
    
}

Codigo.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">
	<h:head>
	</h:head>

	<h:body>
		
			<p:growl id="messages" showSummary="true" showDetail="true" />
			<h:form enctype="multipart/form-data">

				<p:fileUpload
					fileUploadListener="{fileUploadController.handleFileUpload}"
					mode="advanced" update="messages" sizeLimit="100000"
					allowTypes="/(\.|\/)(gif|jpe?g|png)$/" />

				<p:growl id="messages" showDetail="true" />

			</h:form>
	
	</h:body>
</ui:composition>

Alguém ai ?

MB

[code]package br.com.projeto.beans;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Arquivos implements Serializable{

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue
private Integer id;
private String nome;
private String caminho;
private String tipo;
private float tamanho;

public Integer getId() {
	return id;
}

public void setId(Integer id) {
	this.id = id;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public String getCaminho() {
	return caminho;
}

public void setCaminho(String caminho) {
	this.caminho = caminho;
}

public String getTipo() {
	return tipo;
}

public void setTipo(String tipo) {
	this.tipo = tipo;
}

public float getTamanho() {
	return tamanho;
}

public void setTamanho(float tamanho) {
	this.tamanho = tamanho;
}

}
[/code]

xhtml

[code]<?xml version="1.0" encoding="ISO-8859-1"?>

Arquivos
	<div align="center">
		<p:panel header="Arquivos" style="width:1050px">
			<ui:include src="/paginas/Menu.xhtml" />
			<p:messages id="mensagens" showSummary="true" />
			
			<p:fileUpload
				fileUploadListener="#{arquivosBean.fileUploadAction}"
				update="mensagens" multiple="true"  />					
			<br />
			´
			
			
			<p:dataTable var="arquivos" value="#{arquivosBean.listArquivos}"
			widgetVar="arquivosTable"
			emptyMessage="Nenhum arquivos Encontrado Nessas Condições" rowStyleClass="#{empty rowIx or rowIx

mod 2 ne 0 ? ‘even-row’ : ‘odd-row’}"
rowIndexVar=“rowIx” id=“display” >

			<f:facet name="header">
				<p:outputPanel>
					<h:outputText value="Procurar em todos os campos:" />
					<p:inputText id="globalFilter" onkeyup="arquivosTable.filter()"	/>
				</p:outputPanel>
			</f:facet>

			<p:column filterBy="#{arquivos.id}" headerText="Id" footerText="Id"
				filterMatchMode="contains" style="width: 40px">
				<h:outputText value="#{arquivos.id}" style="width: 40px" />
			</p:column>

			<p:column filterBy="#{arquivos.nome}" headerText="Descrição"
				footerText="Descrição" filterMatchMode="contains">
				<h:outputText value="#{arquivos.nome}" />
			</p:column>
			
			<p:column filterBy="#{arquivos.tipo}" headerText="Tipo"
				footerText="Tipo" filterMatchMode="contains" style="width: 40px">
				<h:outputText value="#{arquivos.tipo}" style="width: 40px"/>
			</p:column>
			
			<p:column filterBy="#{arquivos.tamanho}" headerText="Tamanho"
				footerText="Tamanho" filterMatchMode="contains" style="width: 140px">
				<h:outputText value="#{arquivos.tamanho}" style="width: 140px"/>
			</p:column>

			

			<p:column style="width:100px">
				<h:panelGrid columns="2" styleClass="actions" cellpadding="2">

					<h:commandButton image="/imagens/icones/download.gif" title="Download">
					<f:setPropertyActionListener value="#{arquivos.id}"
							target="#{arquivosBean.arquivo.id}" />
                    <p:fileDownload value="#{arquivosBean.file}" />  
                </h:commandButton>  
					
					<h:commandButton image="/imagens/icones/excluir.gif" title="Excluir" action="#{arquivosBean.remove}" >
						<f:setPropertyActionListener value="#{arquivos.id}"
							target="#{arquivosBean.arquivo.id}"/>
					</h:commandButton>
				</h:panelGrid>
			</p:column>
		</p:dataTable>
			
			
			<style>

.ui-datatable .ui-datatable-data .even-row td {
background-color:#fcefa1;
border-right: solid 0px #4e6769;
}

.ui-datatable .ui-datatable-data .odd-row td {
background-color:#f7f7f7;
border-right: solid 0px #4e6769;
}

</p:panel>

</h:form>
</h:body>

[/code]

web.xml

<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:\arquivos</param-value> </init-param> </filter> <filter-mapping> <filter-name>PrimeFaces FileUpload Filter</filter-name> <servlet-name>Faces Servlet</servlet-name> </filter-mapping>

Tyago, mim passar seu email que vou te encaminhar um exemplo pra te!

Tai, eu coloquei no despofile o exemplo

aqui está o link…

http://depositfiles.com/files/tcqy146zq

Alguem aqui desse tópico conseguiu usar o tal fileUpload ???

Eu consegui, mas possi te passar soh amanha de manha. E funciona sim. Só noa consigo fazer funcionar quando eu estou mexendo no portal liferay usando o jboss, nao sei o que acontece quando esta assim. (no portlet).

Boa noite amigo,

Então estou tentando usar EJB e Glassfish, mas acredito que a forma q está fazendo não dever ter muitas mudanças.

vlw pela resposta.

carra segue meu exemplo que coloquei ali… o meu ta funcionando perfeitamente

Realmente, nem vou lhe mandar o meu exemplo, pois o dele esta identico ao meu, e esta funcionando sim.

:wink: