在 Struts 2 中使用 ModelDriven 上传文件操作 class

Upload file Action class with ModelDriven in Struts 2

我正在研究 Struts 2 并遇到一个问题:无法在实现 ModelDriven

ActionClass 中上传文件

Product.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 上传。但是如果ProductAction实现了ModelDriven,方法setImage()没有被调用,如果ProductAction没有实现ModelDriven,它工作正常。怎么解决?

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

String name;
File image; 
//getters and setters