Is it normal behavior for the <s:fileUpload> to call the setter for byte[] 
twice? I'm mean first it calls it for the byte[] with the file data and then it 
calls it with a null. I used seam 1.2.1.GA on jboss 4.0.5.GA. The project was 
build with seam-gen.

package app.beans.entity;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Scope;
  | import org.jboss.seam.core.FacesMessages;
  | import org.jboss.seam.log.Log;
  | 
  | @Stateful
  | @Name("uploadFile")
  | @Scope(ScopeType.EVENT)
  | public class UploadFile implements java.io.Serializable, UploadFileI {
  |     private static final long serialVersionUID = 940956938635067807L;
  |     @Logger
  |     private Log log;
  |     private byte[] byteArray;
  |     private String fileName;
  |     private String size;
  |     private static int count = 0;
  |     public UploadFile() {
  |     }
  |     public String getFileName() {
  |             return fileName;
  |     }
  |     public void setFileName(String fileName) {
  |             this.fileName = fileName;
  |             FacesMessages.instance().add("i'm here set File name = 
"+this.fileName);
  |     }
  |     public byte[] getByteArray() {
  |             return byteArray;
  |     }
  |     public void setByteArray(byte[] byteArray) {
  |             count++;
  | //SUGESTED FIX
  | //          if (byteArray == null) {
  | //                  FacesMessages.instance().add("i'm here 
setByteArray("+byteArray+");null count:"+count);
  | //                  return;
  | //          }
  |             this.byteArray = byteArray;
  |             FacesMessages.instance().add("i'm here 
setByteArray("+byteArray+"); count:"+count);
  |     }
  |     public String getSize() {return size;}
  |     public void setSize(String size) {
  | this.size = size;
  |             FacesMessages.instance().add("i'm here set File size = 
"+this.size);
  |     }
  | 
  |     @Remove @Destroy
  |     public void destroy() {
  |     }
  |     public void reset() {
  |             count=0;
  |     }
  | }
the interface

  | package app.beans.entity;
  | 
  | import org.jboss.annotation.ejb.Local;
  | 
  | @Local
  | public interface UploadFileI {
  |     public String getFileName();
  |     public void setFileName(String fileName);
  |     public byte[] getByteArray();
  |     public void setByteArray(byte[] byteArray);
  |     public String getSize();
  |     public void setSize(String size);
  |         public void destroy();
  |     public void reset();
  | }
  | 
the form

  | <!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:s="http://jboss.com/products/seam/taglib";
  |       xmlns:h="http://java.sun.com/jsf/html";>
  | <head>
  | <title>Test Upload</title>
  | </head>
  | <body>
  |       <h:messages styleClass="message"/>
  |       <h:form id="form" enctype="multipart/form-data">
  |       
  |             <h:panelGrid columns="2">
  |                     <h:outputText value="file name" />
  |                     <h:outputText value="#{uploadFile.fileName}" />
  |                     
  |                     <h:outputText value="file size" />
  |                     <h:outputText value="#{uploadFile.size}" />
  | 
  | 
  |                     <h:outputText value="file size" />
  |                     <h:inputTextarea value="#{uploadFile.byteArray}" />
  | 
  |                     <s:fileUpload data="#{uploadFile.byteArray}" 
fileName="#{uploadFile.fileName}" fileSize="#{uploadFile.size}"/>
  |                     <h:commandButton action="#{uploadFile.reset}" 
value="reset"></h:commandButton>
  |             </h:panelGrid>
  |       </h:form>
  |       </body>
  | </html>
  | 
what to expect

  |     * i'm here setByteArray([EMAIL PROTECTED]); count:1
  |     * i'm here set File name = IMG_3332.jpg
  |     * i'm here set File size = 1647973
  |     * i'm here setByteArray(null); count:2
  | 

I was get NPE when trying to access the 'byteArray' an couldn't figure out why. 
Since the fileName and size where set ok.

Is this a bug ?


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4034977#4034977

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4034977
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to