[jboss-user] [JBoss Seam] - s:fileUpload error

demetrio812 do-not-reply at jboss.com
Wed Aug 22 15:09:58 EDT 2007


Hi,
I read about 50 posts, tried a lot of combination but a simple file upload is not working in my app (Seam 2B1, JBoss AS 4.2.1GA)...I made to work about 2 months ago (Seam 1.2.1GA, JBoss AS 4.0.X).

I tried SEAM POJO, SLSB, SFSB with CONVERSATION or EVENT scope, tried InputStream for data field but also byte[], add Seam Multipart Filter (org.jboss.seam.web.MultipartFilter) to web.xml but it doesn't work!

this is my configuration:

web.xml:


  | <?xml version="1.0" ?>
  | <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
  |          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
  |          version="2.5">
  | 
  |     <!-- Ajax4jsf -->
  |         
  |     <context-param>
  |         <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
  |         <param-value>com.sun.facelets.FaceletViewHandler</param-value>
  |     </context-param>
  |     
  |     <context-param>
  |         <param-name>org.ajax4jsf.SKIN</param-name>
  |         <param-value>blueSky</param-value>
  |     </context-param>
  |  
  |    <!-- Seam -->
  |     
  |    <listener>
  |       <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |    </listener>
  |     
  |     <filter>
  |         <filter-name>Seam Filter</filter-name>
  |         <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
  |     </filter>
  | 
  |     <filter-mapping>
  |         <filter-name>Seam Filter</filter-name>
  |         <url-pattern>/*</url-pattern>
  |     </filter-mapping>
  |         
  |    <servlet>
  |       <servlet-name>Seam Resource Servlet</servlet-name>
  |       <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
  |    </servlet>
  |     
  |    <servlet-mapping>
  |       <servlet-name>Seam Resource Servlet</servlet-name>
  |       <url-pattern>/seam/resource/*</url-pattern>
  |    </servlet-mapping>
  |    
  |    <!-- Facelets development mode (disable in production) -->
  |    
  |    <context-param>
  |       <param-name>facelets.DEVELOPMENT</param-name>
  |       <param-value>true</param-value>
  |    </context-param>
  |     
  |    <!-- JSF -->
  |    
  |    <context-param>
  |       <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
  |       <param-value>.xhtml</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>*.seam</url-pattern>
  |    </servlet-mapping>
  |                   
  |    <security-constraint> 
  |        <display-name>Restrict raw XHTML Documents</display-name>
  |        <web-resource-collection>
  |            <web-resource-name>XHTML</web-resource-name>
  |            <url-pattern>*.xhtml</url-pattern>
  |        </web-resource-collection>
  |        <auth-constraint/>
  |    </security-constraint>
  |    
  |  <context-param>
  |   <param-name>facelets.LIBRARIES</param-name>
  |   <param-value>/WEB-INF/tomahawk.taglib.xml</param-value>
  |  </context-param>
  | <!-- Tomahawk -->  
  | <filter>
  |     <filter-name>MyFacesExtensionsFilter</filter-name>
  |     <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>
  |     <init-param>
  |         <param-name>maxFileSize</param-name>
  |         <param-value>20m</param-value>
  |     </init-param>
  | </filter>
  | 
  | <!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages  -->
  | <filter-mapping>
  |     <filter-name>MyFacesExtensionsFilter</filter-name>
  |     <!-- servlet-name must match the name of your javax.faces.webapp.FacesServlet entry -->
  |     <servlet-name>Faces Servlet</servlet-name>
  | </filter-mapping>
  | 
  | <!-- extension mapping for serving page-independent resources (javascript, stylesheets, images, etc.)  -->
  | <filter-mapping>
  |     <filter-name>MyFacesExtensionsFilter</filter-name>
  |     <url-pattern>/faces/myFacesExtensionResource/*</url-pattern>
  | </filter-mapping>
  | 
  | <!-- Parametri applicazione -->
  | <context-param>
  |   <param-name>id_tipologia_admin</param-name>
  |   <param-value>1</param-value>
  | </context-param>
  | <context-param>
  |   <param-name>id_tipologia_editor</param-name>
  |   <param-value>2</param-value>
  | </context-param>
  | <context-param>
  |   <param-name>id_tipologia_guest</param-name>
  |   <param-value>3</param-value>
  | </context-param>
  | <context-param>
  |   <param-name>id_tipologia_iscritto_newsletter</param-name>
  |   <param-value>4</param-value>
  | </context-param>
  | <context-param>
  |   <param-name>id_lingua_default</param-name>
  |   <param-value>1</param-value>
  | </context-param>
  | <context-param>
  |   <param-name>id_configurazione</param-name>
  |   <param-value>1</param-value>
  | </context-param>
  |    
  |    
  | </web-app>
  | 
  | 

component.xml:


  | <?xml version="1.0" encoding="UTF-8"?>
  | <components xmlns="http://jboss.com/products/seam/components"
  |             xmlns:core="http://jboss.com/products/seam/core"
  |             xmlns:persistence="http://jboss.com/products/seam/persistence"
  |             xmlns:drools="http://jboss.com/products/seam/drools"
  |             xmlns:bpm="http://jboss.com/products/seam/bpm"
  |             xmlns:security="http://jboss.com/products/seam/security"
  |             xmlns:mail="http://jboss.com/products/seam/mail"
  |             xmlns:web="http://jboss.com/products/seam/web"
  | 	xmlns:framework="http://jboss.com/products/seam/framework"
  | 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |             xsi:schemaLocation=
  |                 "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd 
  |                  http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.0.xsd 
  |                  http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.0.xsd
  |                  http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.0.xsd
  |                  http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.0.xsd
  |                  http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.0.xsd
  |                  http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.0.xsd
  |                  http://jboss.com/products/seam/framework http://jboss.com/products/seam/framework-2.0.xsd
  |                  http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd">
  | 
  |    <core:init debug="@debug@" jndi-pattern="@jndiPattern@"/>
  |      
  |    <core:manager concurrent-request-timeout="500" 
  |                  conversation-timeout="120000" 
  |                  conversation-id-parameter="cid"/>
  |     
  |    <persistence:managed-persistence-context name="entityManager"
  |                                      auto-create="true"
  |                       persistence-unit-jndi-name="java:/unica2EntityManagerFactory"/>
  | 
  |    <drools:rule-base name="securityRules">
  |        <drools:rule-files>
  |            <value>/security.drl</value>
  |        </drools:rule-files>
  |    </drools:rule-base>
  | 
  |    <security:identity authenticate-method="#{authenticator.authenticate}"
  |                            security-rules="#{securityRules}"/>
  |    
  |    <event type="org.jboss.seam.notLoggedIn">
  |        <action expression="#{redirect.captureCurrentView}"/>
  |    </event>
  |    <event type="org.jboss.seam.postAuthenticate">
  |        <action expression="#{redirect.returnToCapturedView}"/>
  |    </event>
  |    
  |    <mail:mail-session host="out.virgilio.it" port="25" debug="true"
  | 		ssl="false" />
  |      
  |    <!-- For use with jBPM pageflow or process management -->
  |    <!--  
  |    <bpm:jbpm>
  |       <bpm:process-definitions></bpm:process-definitions>
  |       <bpm:pageflow-definitions></bpm:pageflow-definitions>
  |    </bpm:jbpm>
  |    -->
  | 
  | 	<web:multipart-filter create-temp-files="true"
  | 		max-request-size="10000000" url-pattern="*.seam">
  | 	</web:multipart-filter>
  | 
  | 	<core:resource-loader>
  | 		<core:bundle-names>
  | 			<value>messages</value>
  | 			<value>messages_site</value>
  | 			<value>messages_articles</value>
  | 			<value>messages_articles_list</value>
  | 			<value>messages_articles_form</value>
  | 		</core:bundle-names>
  | 	</core:resource-loader>
  | 	
  | </components>
  | 

home.xhtml:


  | <?xml version="1.0" encoding="iso-8859-1"?>
  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  |                       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  | <ui:composition xmlns="http://www.w3.org/1999/xhtml"
  |                 xmlns:s="http://jboss.com/products/seam/taglib"
  |                 xmlns:ui="http://java.sun.com/jsf/facelets"
  |                 xmlns:f="http://java.sun.com/jsf/core"
  |                 xmlns:h="http://java.sun.com/jsf/html"
  |                 xmlns:rich="http://richfaces.ajax4jsf.org/rich"
  |                 template="layout/template.xhtml">
  | 
  | <ui:define name="body">
  | 
  |     <h:messages styleClass="message"/>
  |     
  |         <h:form enctype="multipart/form-data">
  | 	<rich:panel>
  |             <f:facet name="header">Test</f:facet>
  |             
  | 			<s:decorate id="fileUploadDecoration" template="layout/edit.xhtml">
  |                 <ui:define name="label">Image</ui:define>
  |                 <s:fileUpload id="file" data="#{uploadFile.uploadedFile}"
  | 		                />
  |             </s:decorate>
  |             
  |             <div style="clear:both"/>
  | 	</rich:panel>
  |         <div class="actionButtons">	
  |             <h:commandButton value="Upload" action="#{uploadFile.parse}">
  |             	
  |             </h:commandButton> 
  | 		</div>	
  | 	</h:form>
  | </ui:define> 
  | </ui:composition>
  | 

UploadFile.java:


  | package com.novaware.unica;
  | 
  | import java.io.InputStream;
  | import java.io.Serializable;
  | 
  | import javax.ejb.Remove;
  | import javax.ejb.Stateful;
  | import javax.ejb.Stateless;
  | 
  | import org.jboss.seam.ScopeType;
  | import org.jboss.seam.annotations.Destroy;
  | import org.jboss.seam.annotations.In;
  | import org.jboss.seam.annotations.Logger;
  | import org.jboss.seam.annotations.Name;
  | import org.jboss.seam.annotations.Scope;
  | import org.jboss.seam.faces.FacesMessages;
  | import org.jboss.seam.log.Log;
  | 
  | 
  | @Name("uploadFile")
  | @Stateful  // I also tried Stateless
  | @Scope(ScopeType.EVENT) //I also tried CONVERSATION
  | public class UploadFile implements IUploadFile {	// Also tried Seam Pojo
  | 	@Logger
  | 	Log log;
  | 	
  |     @In FacesMessages facesMessages;
  |     
  | 	private byte[] uploadedFile; // I also tried with InputStream
  | 	private String uploadedFileName;
  | 	private String contentType;
  | 	
  | 	public void parse() throws Exception {
  | 		log.info("File:"+uploadedFile+" - "+uploadedFileName+" - "+contentType);
  | 	}
  | 
  | 	public void setUploadedFile(byte[] uploadedFile)
  | 	{
  | 		this.uploadedFile = uploadedFile;
  | 	}
  | 	
  | 	public byte[] getUploadedFile()
  | 	{
  | 		return uploadedFile;
  | 	}
  | 
  | 	public String getUploadedFileName() {
  | 		return uploadedFileName;
  | 	}
  | 
  | 
  | 	public void setUploadedFileName(String uploadedFileName) {
  | 		this.uploadedFileName = uploadedFileName;
  | 	}
  | 
  | 	public String getContentType() {
  | 		return contentType;
  | 	}
  | 
  | 	public void setContentType(String contentType) {
  | 		this.contentType = contentType;
  | 	}
  | 	
  | 	@Destroy @Remove 
  | 	public void destroy() {
  | 	}
  | }	
  | 

IUploadFile.java:


  | package com.novaware.unica;
  | 
  | import java.io.InputStream;
  | 
  | import javax.ejb.Local;
  | 
  | @Local
  | public interface IUploadFile {
  | 
  | 	public abstract void parse() throws Exception;
  | 
  | 	public abstract void setUploadedFile(byte[] uploadedFile);
  | 
  | 	public abstract byte[] getUploadedFile();
  | 
  | 	public abstract String getUploadedFileName();
  | 
  | 	public abstract void setUploadedFileName(String uploadedFileName);
  | 
  | 	public abstract String getContentType();
  | 
  | 	public abstract void setContentType(String contentType);
  | 
  | 	public void destroy();
  | }
  | 

where is the error?

thanks!

Demetrio Filocamo

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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4077020



More information about the jboss-user mailing list