Question

J'ai un doute. Comment fonctionne l'interface Modeldriven Struts2. Dans ma demande j'ai utilisé pour une seule forme. Et je mis setters et getters en même que les noms de formulaire. Est-il possible de placer plusieurs objets ModelDriven avec setter et getter. Si je plaçais comme ça alors comment il reconnaîtra?

Était-ce utile?

La solution

Toute action mettant en œuvre l'interface ModelDriven doit fournir une méthode de getModel() qui retourne l'objet qui représente le modèle de l'action. Tous les paramètres passés à l'action sont supposés être sous-propriétés du modèle. Vous ne pouvez avoir un modèle par action dans une action ModelDriven.

Par exemple, permet de supposer que nous avons un modèle appelé Profile et une action pour modifier notre profil. Dans notre forme, nous avons un champ de texte pour notre site. Sans l'aide ModelDriven, vous auriez des méthodes de getWebsite et setWebsite sur votre action. Avec ModelDriven, le getter et setter sur le modèle serait appelé à la place. En effet, getModel().setWebsite("http://stackoverflow.com").

Exemple

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

Autres conseils

D'accord ... ModelDriven ressemble à ActionForm dans Struts1 et d'avoir la similitude je crois que cette approche est fournie. Même alors si u ont votre modèle, avec beaucoup de composition u devrait suivre l'approche ObjectBacked pour définir les valeurs d'objets contenus dans le modèle.

En cas de ModelDriven, vous pouvez remplir une seule POJO à la fois. Vous ne pouvez pas utiliser plusieurs ModelDriven dans la classe d'action unique. Parce que la méthode de getModel() remplir l'objet du Pojo qui est spécifié dans ModelDrive<Pojo>.It va essayer de trouver le getter dans ce POJO. Le nom du champ doit correspondre avec les noms de formulaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top