Domanda

ho un dubbio. Come l'interfaccia Modeldriven Struts2 funziona. Nella mia applicazione ho usato per un singolo modulo. E ho messo setter e getter come stessi nomi del modulo. E 'possibile posizionare più oggetti ModelDriven con setter e getter. Se ho messo così allora come si riconosce?

È stato utile?

Soluzione

Qualsiasi azione implementando l'interfaccia ModelDriven deve fornire un metodo getModel() che restituisce l'oggetto che rappresenta il modello dell'azione. Eventuali parametri passati all'azione sono assunti essere sotto-proprietà del modello. Si può avere un solo modello per azione in un'azione ModelDriven.

Per esempio, permette di assumere abbiamo un modello chiamato Profile e un'azione per modificare il nostro profilo. Nel nostro modulo, abbiamo un campo di testo per il nostro sito. Senza usare ModelDriven, si avrebbe getWebsite e setWebsite metodi su vostra azione. Con ModelDriven, il getter e setter sul modello sarebbe chiamato, invece. Effettivamente, getModel().setWebsite("http://stackoverflow.com").

Esempio

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

Altri suggerimenti

Sono d'accordo ... ModelDriven sembra simile a ActionForm in Struts1 e di avere la somiglianza Credo che questo approccio è fornito. Anche allora se u avere il vostro modello, con molte composizione u avrebbe dovuto seguire l'approccio ObjectBacked per impostare i valori degli oggetti contenuti nel modello.

In caso di ModelDriven, è possibile popolare un solo POJO alla volta. Non è possibile utilizzare ModelDriven multiplo in singola classe azione. Perché il metodo getModel() popolare l'oggetto del Pojo che è specificato nel ModelDrive<Pojo>.It cercherà di trovare il getter in questo POJO. Il nome del campo deve essere abbinato con i nomi di forma.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top