在 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
我正在研究 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