如何使用ajax调用将参数传递给我的动作类的setter方法

时间:2015-12-16 13:27:30

标签: javascript java ajax

我一直在尝试使用ajax调用进行图片上传操作。下面是一段代码。

$.ajax({
    type: "GET",
    url: "imageUploadAction.action",
    parameters: {
        file: file
    },
    success: function(response) {
        alert('Success');
    }
});

struts.xml,我有:

<action name="imageUploadAction"
        class="com.sample.ImageUpload">
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">2097152</param>
        <param name="allowedTypes">
                image/png,image/gif,image/jpeg,image/pjpeg
            </param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <result name="success" type="stream">
        <param name="contentType">text/html</param>
        <param name="inputName">imageOutputStream</param>
    </result>
    <result name="error" type="stream">
        <param name="contentType">text/html</param>
        <param name="inputName">imageOutputStream</param>
    </result>
</action>

我的行动课是:

package com.sample;

import java.io.File;
import java.io.InputStream;

import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FileUtils;

import org.apache.struts2.interceptor.ServletRequestAware;


import com.opensymphony.xwork2.ActionSupport;

public class ImageUpload extends ActionSupport implements ServletRequestAware {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private HttpServletRequest servletRequest;

    private File file;
    private String fileContentType;
    private String fileFileName;

    private InputStream imageOutputStream;

    public void execute() {
        try {
            String filePath = servletRequest.getSession().getServletContext().getRealPath("/");
            File fileToCreate = new File(filePath, this.fileFileName);

            FileUtils.copyFile(this.file, fileToCreate);
        } catch (Exception e) {
            e.printStackTrace();
            // addActionError(e.getMessage());

            //  return INPUT;
        }
        //  return SUCCESS;
    }

    public File getFile() {
        return file;
    }

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

    public String getFileContentType() {
        return fileContentType;
    }

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

    public String getFileFileName() {
        return fileFileName;
    }

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

    public HttpServletRequest getServletRequest() {
        return servletRequest;
    }

    @Override
    public void setServletRequest(HttpServletRequest servletRequest) {
        this.servletRequest = servletRequest;

    }

    public InputStream getImageOutputStream() {
        return imageOutputStream;
    }

    public void setImageOutputStream(InputStream imageOutputStream) {
        this.imageOutputStream = imageOutputStream;
    }
}

当我尝试调试时,我发现在ajax调用期间没有设置文件变量。有人可以帮我这个吗?

0 个答案:

没有答案
相关问题