我正在研究Struts 2并遇到问题:无法上传实现ActionClass
的{{1}}中的文件
ModelDriven
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;
}
}
我想上传 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
,则它正常工作。怎么解决它?
答案 0 :(得分:2)
将image
的类型更改为File
和getter / setter。当您使用ModelDriven
时,您不需要使用操作属性。动作类也称为控制器,不需要保持状态。在使用请求参数填充之前,Struts会将模型推送到valueStack
的顶部。
String name;
File image;
//getters and setters