Componente de upload do PrimeFaces não está chamando o método do bean

9 respostas
Roger75
Estou tentando usar o componente de upload de arquivos do Primefaces, mas não está chamando o método do bean... por que será?
<h:body>
	<h:form>
		<p:fileUpload fileUploadListener="#{uploadBean.up}" />
	</h:form>	
</h:body>
@RequestScoped
@ManagedBean
public class UploadBean {

	public void up(FileUploadEvent event) {
		UploadedFile file = event.getFile();
                System.out.println(">>> Nome do arquivo="+file.getFileName());
Não aparece este println no console do Glassfish...

9 Respostas

gilvan.sfilho

E ai cara beleza??

O componente fileUpload do primefaces necessita de configurações adicionais do web.xml, verifique se você fez isso.
Caso não tenha feito adicione as seguinte linhas ao seu web.xml

<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>

Lembre-se também que para funcionar esse componente precisa das bibliotecas:

commons-fileupload (1.2.1)
commons-io (1.4)

Abraços

E

Configurou o filter no web.xml ?

Dá uma olhada no passo a passo: http://quebrandoparadigmas.wordpress.com/2010/07/06/file-upload-com-primefaces-e-jsf2/

gilvan.sfilho

Esse artigo citado ai em cima e bacana… =)

Me ajudou muito quando precisei implementar um upload de arquivo…
Outra coisa, so consegui implementar mudando o escopo do bean para session,
como request não funcionou não…

Abraços

Roger75

Valeu, era o filter mesmo.

Roger75

Fez o upload, mas deu erro ao abrir o arquivo. Um arquivo txt subiu, mas ficou com conteúdo em branco, e um jpg não mostra a imagem, ao tentar abrir…

Roger75

Ops, era um pequeno erro na manipulação do FileOutputStream… agora deu certo.

gilvan.sfilho

Posta o código da solução cara,
assim outras pessoas terão um exemplo para se basear.

Abraços

Roger75
O erro que estava dando era porque não estava dando write no novo arquivo.
UploadedFile file = event.getFile();
                
		try {
			FileOutputStream outPutStream = new FileOutputStream(
					"C:\\temp\\upload\\"
							+ file.getFileName());
                        outPutStream.write(file.getContents());
                        
                        outPutStream.flush();
                        outPutStream.close();
                }
tiagowanke

Bom dia,

Estou usando o primefaces 3.3.1, adicionei o filtro no web.xml, porém o eclipse me mostra a seguinte mensagem:

O meu bean continua sem ser chamado pelo componente de upload do primefaces.

Alguém sabe o que pode ser?

Criado 10 de fevereiro de 2011
Ultima resposta 9 de jul. de 2012
Respostas 9
Participantes 4