RichFaces FileUpload

2 respostas
M

Olá, pessoal !

Sou mais um que leu inúmeros casos semelhantes aqui no GUJ, seguiu vários tutorias pela net, consultei colegas de trabalho, mas esse componente *#%$@!& não faz o upload.

Passei o dia inteiro(na verdade, perdi o dia inteiro) tentando configurá-lo.

O último tutorial que segui:

http://www.linhadecodigo.com.br/artigo/2774/Upload-com-o-RichFaces.aspx

Acreditava que iria funcionar, mas de novo falhou miseravelmente…

Não consigo enxergar o erro:

Meu WEB.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	<description>Facelets StarterKit</description>
	<display-name>nasa</display-name>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>

	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<listener>
		<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
	</listener>

	<context-param>
		<param-name>org.richfaces.SKIN</param-name>
		<param-value>deepMarine</param-value>
	</context-param>
	<context-param>
		<param-name>org.richfaces.CONTROL_SKINNING</param-name>
		<param-value>enable</param-value>
	</context-param>
	<filter>
		<display-name>RichFaces Filter</display-name>
		<filter-name>richfaces</filter-name>
		<filter-class>org.ajax4jsf.Filter</filter-class>
		<init-param>
			<param-name>createTempFiles</param-name>
			<param-value>false</param-value>
		</init-param>

		<init-param>
			<param-name>maxRequestSize</param-name>
			<param-value>1000000</param-value>
		</init-param>

	</filter>
	<filter-mapping>
		<filter-name>richfaces</filter-name>
		<servlet-name>Faces Servlet</servlet-name>
		<dispatcher>REQUEST</dispatcher>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
	<listener>
		<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
	</listener>
	<context-param>
		<param-name>com.sun.faces.validateXml</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>com.sun.faces.verifyObjects</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.DEVELOPMENT</param-name>
		<param-value>true</param-value>
	</context-param>
	<context-param>
		<param-name>facelets.REFRESH_PERIOD</param-name>
		<param-value>2</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.xhtml</param-value>
	</context-param>
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>server</param-value>
	</context-param>
	<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> -->
	<servlet-mapping>
		<servlet-name>Faces Servlet</servlet-name>
		<url-pattern>*.jsf</url-pattern>
	</servlet-mapping>


</web-app>

O meu Bean:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.StringTokenizer;

import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;

import org.richfaces.event.UploadEvent;
import org.richfaces.model.UploadItem;

@Controller
@Scope("session")
public class FileUploadBean {

	public void listenerManual(UploadEvent event) throws FileNotFoundException {
		FacesContext ctx = FacesContext.getCurrentInstance();
		ServletContext servletContext = (ServletContext) ctx
				.getExternalContext().getContext();
		String path = servletContext.getRealPath("/");
		UploadItem item = event.getUploadItem();

		String filePathName = item.getFileName();
		String fileName = "";
		StringTokenizer stringTokenizer = new StringTokenizer(filePathName,
				"\\");
		while (stringTokenizer.hasMoreElements()) {
			fileName = stringTokenizer.nextToken();
		}

		path = path + "upload\\" + fileName;
		OutputStream outputStream = new FileOutputStream(path);
		try {
			outputStream.write(item.getData());
			outputStream.close();
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

E, por fim, meu xhtml:

<!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:ui="http://java.sun.com/jsf/facelets"
	xmlns:rich="http://richfaces.org/rich"
	xmlns:a4j="http://richfaces.org/a4j">

<ui:composition>

	<f:view>
		<h:form>

			<rich:fileUpload id="upload" addControlLabel="Selecionar arquivo..."
				clearAllControlLabel="Limpar Todos" clearControlLabel="Limpar"
				cancelEntryControlLabel="Cancelar" progressLabel="Carregando"
				stopControlLabel="Parar" uploadControlLabel="Salvar"
				doneLabel="Finalizado" listHeight="50px" autoclear="false"
				maxFilesQuantity="1" immediateUpload="false"
				acceptedTypes="pdf, jpg"
				fileUploadListener="#{fileUploadBean.listenerManual}">

			</rich:fileUpload>
		</h:form>
	</f:view>



</ui:composition>
</html>

2 Respostas

balrog

"Não consigo enxergar o erro: "

que coincidencia, eu tbm nao … talvez se vc se desse o trabalho de postar o erro, facilitaria …

M

Não dá erro. Quando clico no botão de upload a barra de progresso até aparece, mas fica estática.

Criado 7 de julho de 2011
Ultima resposta 8 de jul. de 2011
Respostas 2
Participantes 2