Bom, já li vários tópicos tanto aqui como em outros forúns, mas não consegui resolver meu problema.
Porém, no listener o trecho item.getData() está vindo null. Alguém sabeeria por que?
Desde já, grato.
BEAN:
@SuppressWarnings("unchecked")
private static Object getSessionParam(String param) {
FacesContext context = FacesContext.getCurrentInstance();
Map sessionMap = context.getExternalContext().getSessionMap();
return sessionMap.get(param);
}
@SuppressWarnings("unchecked")
private static void setSessionParam(String param, Object object) {
FacesContext context = FacesContext.getCurrentInstance();
Map sessionMap = context.getExternalContext().getSessionMap();
sessionMap.put(param, object);
}
public void listener(UploadEvent event) throws Exception {
UploadItem item = event.getUploadItem();
this.nome = item.getFileName();
this.tamanho = item.getFileSize();
setArquivo(item.getData());
setSessionParam("foto", getArquivo());
this.size = 1;
}
public void paint(OutputStream stream, Object object) throws IOException {
byte[] foto = (byte[]) getSessionParam("foto");
stream.write(foto);
}
aqui é o XHTML
<h:panelGrid columns="2" columnClasses="top,top">
<rich:fileUpload fileUploadListener="#{ClienteFace.listener}"
maxFilesQuantity="1" id="upload" immediateUpload="true"
acceptedTypes="jpg, gif, png, bmp" allowFlash="false">
<a4j:support event="onuploadcomplete" reRender="info" />
</rich:fileUpload>
<h:panelGroup id="info">
<rich:panel bodyClass="info">
<f:facet name="header">
<h:outputText value="Dados da Imagem" />
</f:facet>
<h:outputText value="Nenhuma imagem carregada"
rendered="#{ClienteFace.size==0}" />
<rich:dataGrid columns="1" value="#{ClienteFace.arquivo}"
var="arquivo">
<rich:panel bodyClass="rich-laguna-panel-no-header">
<h:panelGrid columns="2">
<a4j:mediaOutput element="img" mimeType="image/jpeg"
createContent="#{ClienteFace.paint}"
style="width:100px; height:100px;" cacheable="false">
</a4j:mediaOutput>
<h:panelGrid columns="2">
<h:outputText value="Nome do Arquivo:" />
<h:outputText value="#{ClienteFace.nome}" />
<h:outputText value="Tamanho do arquivo (bytes):" />
<h:outputText value="#{ClienteFace.tamanho}" />
</h:panelGrid>
</h:panelGrid>
</rich:panel>
</rich:dataGrid>
</rich:panel>
<rich:spacer height="3" />
<br />
</h:panelGroup>
</h:panelGrid>
e por ultimo o web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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_2_5.xsd"
version="2.5">
<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>menu.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>true</param-value>
</context-param>
<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>
<filter>
<display-name>Ajax4jsf Filter</display-name>
<filter-name>ajax4jsf</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<context-param>
<param-name>org.ajax4jsf.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<filter-mapping>
<filter-name>ajax4jsf</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
</web-app>