我怀疑。 Struts2 Modeldriven
接口如何工作。在我的应用程序中,我用于单个表单。我将setter和getter与表单名称相同。是否可以使用setter和getter放置多个ModelDriven
对象。如果我这样放置它会如何识别?
答案 0 :(得分:11)
实现ModelDriven
接口的任何操作都必须提供getModel()
方法,该方法返回表示操作模型的对象。传递给操作的任何参数都假定为模型的子属性。 在ModelDriven操作中,每个操作只能有一个模型。
例如,假设我们有一个名为Profile
的模型和一个编辑我们的个人资料的动作。在我们的表单中,我们的网站有一个文本字段。如果不使用ModelDriven
,您的行动就会采用getWebsite
和setWebsite
方法。使用ModelDriven
,将调用模型上的getter和setter。实际上,getModel().setWebsite("http://stackoverflow.com")
。
示例强>
public class EditProfileAction extends ActionSupport implements ModelDriven<Profile> {
private Profile profile;
// todo: other methods
@Override
public Profile getModel() {
return profile;
}
}
public class Profile {
private String website;
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
}
答案 1 :(得分:3)
同意... ModelDriven看起来类似于Struts1中的ActionForm并且具有相似性我相信这种方法是提供的。即使这样,如果你有你的模型,有很多组合你将不得不遵循ObjectBacked方法来设置模型中包含的对象值。
答案 2 :(得分:0)
如果是ModelDriven
,您一次只能填充一个pojo。您不能在单个操作类中使用多个ModelDriven
。因为getModel()
方法填充了ModelDrive<Pojo>
中指定的Pojo的Object。它将尝试在此pojo中找到getter。该字段的名称应与表单名称匹配。