Probleme Richfaces 4 FileUpload & JSF 2
orkin Aug 1, 2011 3:29 PMHi (sorry for my bad english, I'm french.)
I use richfaces 4.0.Final and JSF 2
I have a problem with de fileUpload's compenent. I have copy the example from the showcase richfaces 4 for fileUploadBean and from richfaces 3.3.3 showcase for UploadedImage Object.
I show you my code but it is the same than showcase :
my file.xhtml :
<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:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich"> <h:outputStylesheet> .top { vertical-align: top; } .info { height: 202px; overflow: auto; } </h:outputStylesheet> <rich:panel> <h:form> <h:panelGrid columns="2" columnClasses="top,top"> <rich:fileUpload fileUploadListener="#{fileUploadBean.listener}" id="upload" acceptedTypes="jpg, gif, png, bmp"> <a4j:ajax event="uploadcomplete" execute="@none" render="info" /> </rich:fileUpload> <h:panelGroup id="info" layout="block" rendered="#{fileUploadBean.size > 0}"> <rich:panel bodyClass="info"> <f:facet name="header"> <h:outputText value="Uploaded Files Info" /> </f:facet> <h:outputText value="No files currently uploaded" /> <rich:dataGrid columns="1" value="#{fileUploadBean.files}" var="file" rowKeyVar="row"> <rich:panel bodyClass="rich-laguna-panel-no-header"> <h:panelGrid columns="2"> <a4j:mediaOutput element="img" mimeType="image/jpeg" createContent="#{fileUploadBean.paint}" value="#{row}" style="width:100px; height:100px;" cacheable="false"> <f:param value="#{fileUploadBean.timeStamp}" name="time" /> </a4j:mediaOutput> <h:panelGrid columns="2"> <h:outputText value="File Name:" /> <h:outputText value="#{file.name}" /> <h:outputText value="File Length(bytes):" /> <h:outputText value="#{file.length}" /> </h:panelGrid> </h:panelGrid> </rich:panel> </rich:dataGrid> </rich:panel> <br /> <a4j:commandButton action="#{fileUploadBean.clearUploadData}" render="info, upload" value="Clear Uploaded Data" /> </h:panelGroup> </h:panelGrid> </h:form> </rich:panel> </html>
my fileUploadBean :
@ManagedBean(name = "fileUploadBean") @SessionScoped public class FileUploadBean implements Serializable { private static final long serialVersionUID = 8301770521196265438L; private ArrayList<UploadedImage> files = new ArrayList<UploadedImage>(); public FileUploadBean() { } public void paint(OutputStream stream, Object object) throws IOException { stream.write(getFiles().get((Integer) object).getData()); stream.close(); } public void listener(FileUploadEvent event) throws Exception { UploadedFile item = event.getUploadedFile(); UploadedImage file = new UploadedImage(); file.setLength(item.getData().length); file.setName(item.getName()); file.setData(item.getData()); files.add(file); } public String clearUploadData() { files.clear(); return null; } public int getSize() { if (getFiles().size() > 0) { return getFiles().size(); } else { return 0; } } public long getTimeStamp() { return System.currentTimeMillis(); } public ArrayList<UploadedImage> getFiles() { return files; } public void setFiles(ArrayList<UploadedImage> files) { this.files = files; } }
and my UploadedImage.java
public class UploadedImage { private int length; private String name; private byte[] data; public UploadedImage() { } public int getLength() { return length; } public void setLength(int length) { this.length = length; } public String getName() { return name; } public void setName(String name) { this.name = name; } public byte[] getData() { return data; } public void setData(byte[] data) { this.data = data; } }
The component fileUpload bug because I don't have the "style" of buttons :
Left before upload and right after. (I have just the message "Aucune information de style ne semble associée à ce fichier XML. L'arbre du document est affiché ci-dessous.")
This problem is not very important for me but just for style.
My real problem is when I click on Upload button the listener fileUploadBean.listener is not call and I don't know why. For me all is OK and I don't find anything to help me with my problem. Other method of my class are called but the listener is not call.
I attach my web.xml
I don't need specialy this component richfaces fileUpload but i need upload file, if anybody can help me to fix my problem where can I find code for uploadFile with Richfaces 4.0.Final and JSF2
I hope someone can help me, thx for help in advance
Orkin
-
web.xml 1.4 KB