我有个疑问。Struts2Modeldriven
界面如何工作。在我的应用程序中,我使用了一个表单。我将 setter 和 getter 放置在与表单名称相同的位置。ModelDriven
是否可以使用 setter 和 getter放置多个对象。如果我这样放置那么它会如何识别呢?
3 回答
任何实现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;
}
}
同意... ModelDriven 看起来类似于 Struts1 中的 ActionForm 并且具有相似性,我相信提供了这种方法。即使你有你的模型,你也必须遵循 ObjectBacked 方法来设置模型中包含的对象值。
在 的情况下ModelDriven
,您一次只能填充一个 pojo。您不能ModelDriven
在单个动作类中使用多个。因为getModel()
方法填充了在 . 中指定的 Pojo 的对象。ModelDrive<Pojo>
它将尝试在这个 pojo 中找到 getter。字段名称应与表单名称匹配。