Come interfaccia Struts2 ModelDriven funziona
-
12-10-2019 - |
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?
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.