Как работает интерфейс Struts2 ModelDriven - PullRequest
9 голосов
/ 22 декабря 2010

У меня есть сомнения.Как работает интерфейс Struts2 Modeldriven.В моем приложении я использовал одну форму.И я установил сеттеры и геттеры так же, как имена форм.Можно ли разместить несколько ModelDriven объектов с помощью сеттера и геттера.Если я поставлю так, то как он будет распознавать?

Ответы [ 3 ]

11 голосов
/ 22 декабря 2010

Любое действие, реализующее интерфейс ModelDriven, должно содержать метод getModel(), который возвращает объект, представляющий модель действия. Предполагается, что любые параметры, переданные действию, являются под-свойствами модели. В действии ModelDriven может быть только одна модель.

Например, предположим, у нас есть модель с именем Profile и действие для редактирования нашего профиля. В нашей форме у нас есть текстовое поле для нашего сайта. Без использования ModelDriven в вашем действии будут методы getWebsite и setWebsite. При ModelDriven вместо этого будут вызываться метод получения и установки в модели. Фактически 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;
    }
}
3 голосов
/ 19 января 2011

Согласитесь ... ModelDriven похож на ActionForm в Struts1 и, по-моему, подобный подход обеспечен. Даже тогда, если у вас есть ваша модель, со многими композициями вам придется следовать подходу ObjectBacked, чтобы установить значения объекта в модели.

0 голосов
/ 26 сентября 2012

В случае ModelDriven вы можете заполнять только одно pojo за раз.Вы не можете использовать несколько ModelDriven в одном классе действий.Поскольку метод getModel() заполняет Объект Pojo, который указан в ModelDrive<Pojo>. Он попытается найти геттер в этом PojoИмя поля должно совпадать с именами формы.

...