Dans le cas où vous traitez plusieurs propriétés, les défenseurs du livre à l'aide d'un objet pour maintenir ces propriétés, plutôt que d'avoir les directement sur l'action pour rendre les choses plus faciles pour vous. Prenons les exemples suivants:
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)
}
Dans le deuxième exemple, nous avons mis les propriétés directement sur Widget (en supposant que widget a un property1, property2 et property3).
J'espère que vous pouvez voir comment cela simplifierait votre code dans les exemples où vous avez affaire à beaucoup de propriétés.
Mise à jour: Si vous choisissez de mettre en œuvre ModelDriven
, alors vous référencer les propriétés ci-dessus dans votre forme comme property1
, property2
, property3
, etc. De plus, étant donné que votre action est conduite par un modèle unique, tous les paramètres de formulaire sont considérés comme des enfants du modèle.
Si vous choisissez de ne pas mettre en œuvre ModelDriven
alors vous référencer les propriétés ci-dessus dans votre forme comme widget.property1
, widget.property2
, widget.property3
, etc. L'avantage de cette approche est que vous pouvez avoir d'autres propriétés sur l'action qui ne correspondent pas aux propriétés sur le widget.
En dehors de cela, il n'y a pas de différence. En fait, le livre en dit d'ailleurs autant:
Comme la propriété JavaBeans soutenue par un objet, l'action ModelDriven nous permet également d'utiliser un objet Java complexe pour recevoir nos données. Les différences entre ces deux méthodes sont légères et il n'y a pas de conséquences fonctionnelles à choisir l'une par rapport à l'autre.
- Struts 2 en action, Chapitre 3. Travailler avec Struts 2 actions> Transférer des données sur des objets - Pg. 62
J'ai compris les avantages. ce que mon qn est comment les actions pilotées par le modèle sont meilleures que les beans sauvegardés par l'objet (ils sont tous les deux utilisés pour conserver les données dans les objets). – SonOfTheEARTh
Ils ne sont pas meilleurs. Juste une alternative. J'ai mis à jour ma réponse pour refléter cela. –