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

struts文件上传出错 求救啊!救命啊!
action里面的代码:

Java code
//通过FormFile对象上传文件
private FormFile processDef;    
private FormFile processImage;

    public FormFile getProcessDef() {
        return processDef;
    }
    public void setProcessDef(FormFile processDef) {
        this.processDef = processDef;
    }
    public FormFile getProcessImage() {
        return processImage;
    }
    public void setProcessImage(FormFile processImage) {
        this.processImage = processImage;
    }
    

页面的代码:
HTML code
<tr>
            <td class="tdEditLabel" ><strong>请选择流程定义文件</strong></td>            
            <td class="tdEditContent"><strong><input type="file" name="processDef"></strong>
            </td>
            <td class="tdEditLabel" ><strong>请选择流程定义图片</strong></td>            
            <td class="tdEditContent"><strong><input type="file" name="processImage"></strong></td>
        </tr>


但是上传之后 出现了以下的错误!:
ognl.MethodFailedException: Method "setProcessDef" failed for object su.rong.jie.action.WorkflowAction@41fef [java.lang.NoSuchMethodException: setProcessDef([Ljava.io.File;)]
。。。
/-- Encapsulated exception ------------\
java.lang.NoSuchMethodException: setProcessDef([Ljava.io.File;)
。。。
\--------------------------------------/
expr: processDef val: [Ljava.io.File;@ccc48b context: ognl.OgnlContext@c7df21c1 root:[su.rong.jie.action.WorkflowAction@41fef, com.opensymphony.xwork2.DefaultTextProvider@17ba2e9] value: [Ljava.io.File;@ccc48b
ognl.MethodFailedException: Method "setProcessImage" failed for object su.rong.jie.action.WorkflowAction@41fef [java.lang.NoSuchMethodException: setProcessImage([Ljava.io.File;)]
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:823)




------解决方案--------------------
Java code
源码
package com.framework.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport {
    private static final long serialVersionUID = 1L;

    private String username;

    private String password;

    private List<File> file;

    private List<String> fileFileName;

    private List<String> fileContentType;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public List<File> getFile() {
        return file;
    }

    public void setFile(List<File> file) {
        this.file = file;
    }

    public List<String> getFileFileName() {
        return fileFileName;
    }

    public void setFileFileName(List<String> fileFileName) {
        this.fileFileName = fileFileName;
    }

    public List<String> getFileContentType() {
        return fileContentType;
    }

    public void setFileContentType(List<String> fileContentType) {
        this.fileContentType = fileContentType;
    }

    @SuppressWarnings("deprecation")
    @Override
    public String execute() throws Exception {
        for (int i = 0; i < file.size(); i++) {
            
            InputStream is = new FileInputStream(file.get(i));
            
            String root = ServletActionContext.getRequest().getRealPath("\\item");
            
            File destFile = new File(root, this.getFileFileName().get(i));
            
            OutputStream os = new FileOutputStream(destFile);

            byte[] by = new byte[400];
            
            int length = 0;
            
            while ((length = is.read(by)) > 0) {
                
                os.write(by, 0, length);
            }

            is.close();
            os.close();
        }
        return "success";
    }

}