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>