[jboss-user] [JBoss Seam] - Seam FileUpload Problem
yj4jboss
do-not-reply at jboss.com
Thu Nov 23 01:14:37 EST 2006
Hello,
I am trying to get the Seam File Upload example (from the wiki) working but i am stuck on one point!!
My configs are as follows:
My 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_4.xsd"
| version="2.4">
|
| <listener>
| <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
| </listener>
|
| <listener>
| <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
| </listener>
|
|
| <!-- -->
|
| <context-param>
| <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
| <param-value>client</param-value>
| </context-param>
|
| <context-param>
| <param-name>facelets.DEVELOPMENT</param-name>
| <param-value>true</param-value>
| </context-param>
|
| <context-param>
| <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
| <param-value>.xhtml</param-value>
| </context-param>
|
| <!-- tomahawk samples -->
| <context-param>
| <description>This parameter tells MyFaces if javascript code should be allowed in the
| rendered HTML output.
| If javascript is allowed, command_link anchors will have javascript code
| that submits the corresponding form.
| If javascript is not allowed, the state saving info and nested parameters
| will be added as url parameters.
| Default: "true"</description>
| <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
| <param-value>true</param-value>
| </context-param>
| <context-param>
| <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
| <param-value>false</param-value>
| </context-param>
| <context-param>
| <description>If true, rendered HTML code will be formatted, so that it is "human readable".
| i.e. additional line separators and whitespace will be written, that do not
| influence the HTML code.
| Default: "true"</description>
| <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
| <param-value>true</param-value>
| </context-param>
| <context-param>
| <description>If true, a javascript function will be rendered that is able to restore the
| former vertical scroll on every request. Convenient feature if you have pages
| with long lists and you do not want the browser page to always jump to the top
| if you trigger a link or button action that stays on the same page.
| Default: "false"</description>
| <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
| <param-value>true</param-value>
| </context-param>
|
| <context-param>
| <description>
| Validate managed beans, navigation rules and ensure that forms are not nested.
| </description>
| <param-name>org.apache.myfaces.VALIDATE</param-name>
| <param-value>false</param-value>
| </context-param>
|
| <context-param>
| <description>A class implementing the
| org.apache.myfaces.shared.renderkit.html.util.AddResource
| interface. It is responsible to
| place scripts and css on the right position in your HTML document.
| Default: "org.apache.myfaces.shared.renderkit.html.util.DefaultAddResource"
| Follow the description on the MyFaces-Wiki-Performance page to enable
| StreamingAddResource instead of DefaultAddResource if you want to
| gain performance.
| </description>
| <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>
| <param-value>org.apache.myfaces.renderkit.html.util.DefaultAddResource</param-value>
| <!--param-value>org.apache.myfaces.component.html.util.StreamingAddResource</param-value-->
| </context-param>
|
| <context-param>
| <description>
| A very common problem in configuring MyFaces-web-applications
| is that the Extensions-Filter is not configured at all
| or improperly configured. This parameter will check for a properly
| configured Extensions-Filter if it is needed by the web-app.
| In most cases this check will work just fine, there might be cases
| where an internal forward will bypass the Extensions-Filter and the check
| will not work. If this is the case, you can disable the check by setting
| this parameter to false.
| </description>
| <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>
| <param-value>true</param-value>
| </context-param>
| <!-- -->
|
| <!-- tomahawk -->
| <context-param>
| <param-name>facelets.LIBRARIES</param-name>
| <param-value>/WEB-INF/tomahawk.taglib.xml;/WEB-INF/enforcement.taglib.xml</param-value>
| </context-param>
| <!-- end tomahawk -->
|
|
| <filter>
| <filter-name>Seam Exception Filter</filter-name>
| <filter-class>org.jboss.seam.servlet.SeamExceptionFilter</filter-class>
| </filter>
|
| <filter>
| <filter-name>Seam Redirect Filter</filter-name>
| <filter-class>org.jboss.seam.servlet.SeamRedirectFilter</filter-class>
| </filter>
|
| <!-- 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>
| <description>Set the size limit for uploaded files.
| Format: 10 - 10 bytes
| 10k - 10 KB
| 10m - 10 MB
| 1g - 1 GB
| </description>
| </init-param>
|
| <init-param>
| <param-name>uploadThresholdSize</param-name>
| <param-value>10k</param-value>
| <!--
| <description>Set the threshold size - files
| below this limit are stored in memory, files above
| this limit are stored on disk.
|
| Format: 10 - 10 bytes
| 10k - 10 KB
| 10m - 10 MB
| 1g - 1 GB
| </description>
| -->
| </init-param>
|
|
| <init-param>
| <param-name>uploadRepositoryPath</param-name>
| <param-value>/files</param-value>
| <description>Set the path where the intermediary files will be stored.
| </description>
| </init-param>
|
| </filter>
| <!-- end tomahawk -->
|
|
|
|
| <!-- Ajax4jsf -->
| <filter>
| <display-name>Ajax4jsf Filter</display-name>
| <filter-name>ajax4jsf</filter-name>
| <filter-class>org.ajax4jsf.Filter</filter-class>
| </filter>
| <filter-mapping>
| <filter-name>ajax4jsf</filter-name>
| <url-pattern>*.seam</url-pattern>
| </filter-mapping>
|
|
| <context-param>
| <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
| <param-value>com.sun.facelets.FaceletViewHandler</param-value>
| </context-param>
|
|
|
| <filter-mapping>
| <filter-name>Seam Exception Filter</filter-name>
| <url-pattern>/*</url-pattern>
| </filter-mapping>
|
| <filter-mapping>
| <filter-name>Seam Redirect Filter</filter-name>
| <url-pattern>*.seam</url-pattern>
| </filter-mapping>
|
| <!-- tomahawk -->
| <!-- 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>
| <!-- end tomahawk -->
|
| <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>
|
| <!-- tomahawk -->
| <!-- extension mapping for adding <script/>, <link/>, and other resource tags to JSF-pages -->
| <filter-mapping>
| <filter-name>MyFacesExtensionsFilter</filter-name>
| <url-pattern>*.jsf</url-pattern>
| </filter-mapping> <!-- end tomahawk -->
|
|
|
|
|
| <!-- JAAS Configurations -->
|
| <security-constraint>
| <web-resource-collection>
| <web-resource-name>All resources</web-resource-name>
| <description>Protects all resources</description>
| <url-pattern>/</url-pattern>
| </web-resource-collection>
|
| <auth-constraint>
| <role-name>User</role-name>
| <role-name>Administrator</role-name>
| </auth-constraint>
|
| </security-constraint>
|
| <login-config>
| <auth-method>FORM</auth-method>
| <form-login-config>
| <form-login-page>/login.seam</form-login-page>
| <form-error-page>/login_errors.seam</form-error-page>
|
| </form-login-config>
| </login-config>
|
|
| <security-role>
| <role-name>Administrator</role-name>
| </security-role>
|
| <security-role>
| <role-name>User</role-name>
| </security-role>
|
|
|
| </web-app>
|
|
|
|
My UploadBackingBean :
| package accountingAudit.upload;
|
| import org.apache.myfaces.custom.fileupload.UploadedFile;
| import org.hibernate.validator.NotNull;
| import org.jboss.seam.annotations.Name;
|
| @Name("uploadBean")
| public class UploadBackingBean {
|
| private UploadedFile file;
|
| public void setFile(UploadedFile file) {
| this.file = file;
|
| }
|
| @NotNull
| public UploadedFile getFile() {
| return this.file;
| }
|
| }
|
The SLSB
| package accountingAudit.upload;
|
| import javax.annotation.PostConstruct;
| import javax.ejb.Local;
| import javax.ejb.Stateless;
| import javax.faces.application.FacesMessage;
| import javax.faces.context.FacesContext;
| import javax.interceptor.Interceptors;
|
| import org.apache.myfaces.custom.fileupload.UploadedFile;
| import org.jboss.seam.annotations.In;
| import org.jboss.seam.annotations.Logger;
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.ejb.SeamInterceptor;
| import org.jboss.seam.log.Log;
|
|
| @Local
| public interface UploadAction{
|
| public String upload();
|
| @Stateless
| @Name("upload")
| @Interceptors(SeamInterceptor.class)
| public class UploadActionBean implements UploadAction {
|
| @Logger
| private Log log;
|
|
| @In
| private UploadBackingBean uploadBean;
|
| @In
| private FacesContext facesContext;
|
| public String upload() {
| log.debug("upload()");
|
| UploadedFile file = uploadBean.getFile();
|
| log.debug("Uploading File");
|
| log.debug(file.getName());
|
| facesContext.addMessage(null, new FacesMessage("File Uploaded !! "
| + file.getName()));
|
| return "success";
| }
|
| }
| }
|
My XHTML file is as follows:
|
| <!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:ui="http://java.sun.com/jsf/facelets"
| xmlns:f="http://java.sun.com/jsf/core"
| xmlns:h="http://java.sun.com/jsf/html"
| xmlns:si="http://sourceforge.net/projects/easysi"
| xmlns:t="http://myfaces.apache.org/tomahawk"
|
| xmlns:enforcement="http://www.enforcement.com/jsf">
|
| <body>
|
| <ui:composition template="template.xhtml">
|
| <ui:define name="container">
| <f:view>
| <h:form enctype="multipart/form-data">
| <t:inputFileUpload storage="file" value="#{uploadBean.file}"/>
| <h:commandButton value="Submit" action="#{upload.upload}"/>
| <h:messages/>
| </h:form>
| </f:view>
| </ui:define>
|
| </ui:composition>
| </body>
| </html>
|
|
My WAR file contains the directory "files" where i want to store my uploaded files. As such the following tomahawk config in my web.xml
| <init-param>
| <param-name>uploadRepositoryPath</param-name>
| <param-value>/files</param-value>
| <description>Set the path where the intermediary files will be stored.
| </description>
| </init-param>
|
However, i get the following error message in my logs when i try to upload a file:
|
| org.apache.commons.fileupload.FileUploadException: Processing of multipart/form-data request failed. \files\upload_00000000.tmp (The system cannot find the path specified)
|
Can anyone suggest what could me wrong in the above configs ??
Regards,
Jankee Yogesh
http://www.m-itc.net
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3988055#3988055
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3988055
More information about the jboss-user
mailing list