почему управляемое моделью действие предпочтительнее свойств объекта, поддерживаемых компонентом - PullRequest
1 голос
/ 18 ноября 2010

Я изучаю Struts2 из книги Struts-2 в действии. они говорят, что для передачи данных на объекты действия, управляемые моделью, предпочтительнее свойств объектов, поддерживаемых объектами.

Может кто-нибудь объяснить мне, почему они так говорят?

причина связана с необходимостью упоминания ссылочного имени в слое представления

Ответы [ 2 ]

6 голосов
/ 18 ноября 2010

В случаях, когда вы имеете дело с несколькими свойствами, книга рекомендует использовать объект для хранения этих свойств, а не использовать их непосредственно в действии, чтобы упростить вам задачу.Рассмотрим следующие примеры:

public class CreateNewWidgetAction extends ActionSupport {
    private String property1;
    private String property2;
    private Long property3;
    ...

    public String execute() throws Exception {
        Widget widget = new Widget();
        // set properties on widget
    }

    // getters and setters for properties here
}

public class CreateNewWidgetAction extends ActionSupport {
    private Widget widget;

    public String execute() throws Exception {
        // sub properties for widget were already set, less work to do here
    }

    // getter and setter for widget here (or the
    // getModel method if you are using the Model Driven approach)
}

Во втором примере мы устанавливаем свойства непосредственно в Widget (при условии, что виджет имеет property1, property2 и property3).

Надеюсь, вы увидитекак это упростит ваш код в примерах, где вы имеете дело со множеством свойств.

Обновлено: Если вы решите реализовать ModelDriven, тогда вы будете ссылаться на свойства выше в вашемформа как property1, property2, property3 и т. д. Кроме того, поскольку ваше действие управляется одной моделью, все параметры формы считаются дочерними по отношению к модели.

Если вы не выбраличтобы реализовать ModelDriven, тогда вы должны ссылаться на свойства выше в вашей форме как widget.property1, widget.property2, widget.property3 и т. д. Преимуществом этого подхода является то, что вы можете иметь другие свойства в действии, которые не соответствуютк свойствам на виджете.

Кроме этого, нет никакой разницы.Фактически, в книге даже сказано так:

Подобно объектно-поддерживаемому свойству JavaBeans, действие ModelDriven также позволяет нам использовать сложный объект Java для получения наших данных.Различия между этими двумя методами незначительны, и функциональных последствий для выбора одного из других нет.

- Struts 2 в действии, глава 3. Работа с действиями Struts 2> Перенос данных на объекты- Стр.62

2 голосов
/ 23 ноября 2010

хорошо управляемая модель лучше, если у вас есть свойство вложенности, например, если у вас есть пользовательский бин и у него есть свойство name den на стороне jsp, вы должны сделать что-то вроде user.name, чтобы OGNL мог выяснить, что выуказывают на объект пользователя и внутри этого свойства имени.

В случае интерфейса, управляемого моделью, этот интерфейс поместит объект компонента в верхнюю часть стека значений, когда пришел запрос на действие, так как этот компонент находится в верхней частиСтек значений вам не нужно делать что-то вроде user.name в вашем JSP.

Я надеюсь, что это ответит на ваш вопрос

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...