Struts2 ModelDriven接口如何工作

时间:2010-12-22 11:52:32

标签: struts2 model-driven

我怀疑。 Struts2 Modeldriven接口如何工作。在我的应用程序中,我用于单个表单。我将setter和getter与表单名称相同。是否可以使用setter和getter放置多个ModelDriven对象。如果我这样放置它会如何识别?

3 个答案:

答案 0 :(得分:11)

实现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;
    }
}

答案 1 :(得分:3)

同意... ModelDriven看起来类似于Struts1中的ActionForm并且具有相似性我相信这种方法是提供的。即使这样,如果你有你的模型,有很多组合你将不得不遵循ObjectBacked方法来设置模型中包含的对象值。

答案 2 :(得分:0)

如果是ModelDriven,您一次只能填充一个pojo。您不能在单个操作类中使用多个ModelDriven。因为getModel()方法填充了ModelDrive<Pojo>中指定的Pojo的Object。它将尝试在此pojo中找到getter。该字段的名称应与表单名称匹配。