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