Search code examples
file-uploadstruts2struts

File Upload not working in Struts2-Struts1 Plugin its setting NULL


We are currently migrating our application from struts 1 to struts 2 module wise and we are making use of the struts2-strut1 plugin.

Every things seems to be working fine, expect for file we are getting the file property value as NULL.

We have checked everything see below our tag looks like

JSP code Snippet

<s:form name="uploadForm" namespace="/struts2" action="upload" enctype="multipart/form-data" method="post">
    <s:file name="doc" cssClass="genTextValues"/>
    <s:submit/>
</s:form>

Java Action form

public class UploadForm extends ActionForm {             
        private FormFile doc;
        public FormFile getDoc() {
            return doc;
        }
        // its not setting gives null in action form
        public void setDoc(FormFile doc) {
            this.doc = doc;
        }
    }

Struts.xml mapping

<interceptor name="uploadForm" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor">
        <param name="scope">request</param>
        <param name="className">com.form.UploadForm</param>
        <param name="name">uploadForm</param>
    </interceptor>
    <interceptor-stack name="iUploadForm">
        <interceptor-ref name="staticParams" />
        <interceptor-ref name="uploadForm" />
        <interceptor-ref name="modelDriven" />
        <interceptor-ref name="basicStack" />    
    </interceptor-stack>
    <action name="uploadDoc" class="org.apache.struts2.s1.Struts1Action">
        <param name="className">com.test.action.UploadAction</param>
    <interceptor-ref name="iUploadForm"/>
        <result name="Success" type="tiles">Success</result>
    </action>

We have added required jar see below:

commons-fileupload.jar
struts.jar
struts2-struts1-plugin.jar
struts2-core.jar (2.16)
commons-io2.2.jar

other required jars


Solution

  • There is no fileUpload interceptor in your interceptor-stack.

     <interceptor-stack name="iUploadForm">
            <interceptor-ref name="staticParams" />
            <interceptor-ref name="fileUpload"/>
            <interceptor-ref name="uploadForm" />
            <interceptor-ref name="modelDriven" />
            <interceptor-ref name="basicStack" />    
     </interceptor-stack>