9

我有个疑问。Struts2Modeldriven界面如何工作。在我的应用程序中,我使用了一个表单。我将 setter 和 getter 放置在与表单名称相同的位置。ModelDriven是否可以使用 setter 和 getter放置多个对象。如果我这样放置那么它会如何识别呢?

4

3 回答 3

12

任何实现ModelDriven接口的动作都必须提供一个getModel()方法,该方法返回代表动作模型的对象。任何传递给动作的参数都被假定为模型的子属性。在 ModelDriven 操作中,每个操作可能只有一个模型。

例如,假设我们有一个模型调用Profile和一个操作来编辑我们的配置文件。在我们的表单中,我们的网站有一个文本字段。如果不使用ModelDriven,您将拥有getWebsitesetWebsite方法来执行您的操作。使用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;
    }
}
于 2010-12-22T15:00:14.820 回答
3

同意... ModelDriven 看起来类似于 Struts1 中的 ActionForm 并且具有相似性,我相信提供了这种方法。即使你有你的模型,你也必须遵循 ObjectBacked 方法来设置模型中包含的对象值。

于 2011-01-19T18:20:39.700 回答
0

在 的情况下ModelDriven,您一次只能填充一个 pojo。您不能ModelDriven在单个动作类中使用多个。因为getModel()方法填充了在 . 中指定的 Pojo 的对象。ModelDrive<Pojo>它将尝试在这个 pojo 中找到 getter。字段名称应与表单名称匹配。

于 2012-09-26T13:06:12.580 回答