日期:2014-05-20  浏览次数:20719 次

急啊,struts2上传zip文件找不到
搞了一下午,郁闷死了。
Java code

    <action name="importData" class="importDataAction">
                <result name="init">
                /jsp/3_importData/import_data.jsp
            </result>
            <interceptor-ref name="defaultStack"/>  
            <!-- 限制文件上传大小和类型 -->  
            <interceptor-ref name="fileUpload">  
                <param name="maximumSize">10485760</param>  
                <param name="allowedTypes">  
                    application/msword,application/pdf,application/zip,application/x-zip-compressed
                </param>  
            </interceptor-ref> 
        </action>


Java code

public class ImportDataAction implements Action {

    private ImportDataService importDataService;
        
    private File csvDataFile;
          
            public void setCsvDataFile(File csvDataFile) {
        this.csvDataFile = csvDataFile;
    }

    public File getCsvDataFile() {
        return csvDataFile;
    }

public String importCsvData() throws IOException {
        importDataForm.setCsvDataPath(csvDataFile.getPath()); //csvDataFile为null
                return "init";
    }




HTML code

    <s:form action="importData!importCsvData" enctype ="multipart/form-data">
            <table>
                <tr>
                    <td>导入csv基础数据(ZIP格式)</td>
                </tr>
                <tr>
                    <td>
                        <s:file name = "csvDataFile" ></s:file><s:submit value="提交"></s:submit>
                    </td>
                </tr>
            </table>
        </s:form>


是哪里配错了啊?

------解决方案--------------------
你的Action里面的方法没有执行啊,纠结啊,肯定获取不到文件的路径了啊 ,你的配置文件有错啊“<action name="importData" class="importDataAction">”中间少了一个属性啊,默认调用的方法是execute这个方法,可是你的Action里面没有这个方法啊,你用的是importCsvData()这个方式,当然找不到了啊,所以。。。。。、。

------解决方案--------------------
<action name="importData" class="importDataAction" method="importCsvData">
默认execute方法...
你实现的是Action接口.应该实现execute()方法!
------解决方案--------------------
探讨
<action name="importData" class="importDataAction" method="importCsvData">
默认execute方法...
你实现的是Action接口.应该实现execute()方法!

------解决方案--------------------
楼上们说的对
------解决方案--------------------
对对对,就是这回事
------解决方案--------------------
你这是跳转页面吗