1

我正在研究 Struts 2 并遇到一个问题:无法在ActionClass该工具中上传文件ModelDriven

产品.java

    public class Product {
    String name, image;

    public Product() {
    }

    public Product(String name, String image) {
        super();
        this.name = name;
        this.image = image;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }
}

ProductAction.java

    public class ProductAction extends ActionSupport implements ModelDriven<Product> {

    private static final long serialVersionUID = -5538774764479904797L;

    File image;

    public void setImage(File file) {
        System.out.println("SET IMAGE");
    }

    public String submitPost() throws Exception {
        System.out.println(p.getName());
        System.out.println("POST");
        return SUCCESS;
    }

    Product p = new Product();

    @Override
    public Product getModel() {
        return p;
    }

}

我想上传到ProductAction. 但是如果ProductActionimplements ModelDriven,方法setImage()没有被调用,如果ProductAction没有 implements ModelDriven,它工作正常。如何解决?

4

1 回答 1

2

更改imagetoFile和 getter/setter 的类型。使用ModelDriven时不需要使用操作属性。也称为控制器的操作类不需​​要保持状态。Struts 将您的模型推到顶部,valueStack然后用请求参数填充它。

String name;
File image; 
//getters and setters
于 2015-12-27T16:20:54.400 回答