我有个疑问。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。字段名称应与表单名称匹配。