Wie Struts2 Modellgetriebene Schnittstelle funktioniert
-
12-10-2019 - |
Frage
Ich habe einen Zweifel. Wie die Struts2 Modeldriven
Schnittstelle funktioniert. In meiner Anwendung habe ich für eine einzige Form. Und ich platziert Getter und Setter genauso wie Formularnamen. Ist es möglich, mehrere ModelDriven
Objekte mit Setter und Getter zu platzieren. Wenn ich so dann platziert, wie es erkennt?
Lösung
Jede Aktion der ModelDriven
Schnittstelle implementieren muss eine getModel()
Methode liefern, die das Objekt zurückgibt, die das Modell der Aktion darstellt. Alle Parameter der Aktion übergeben werden angenommen Untereigenschaften des Modells sein. Sie können nur ein Modell in einer Modellgetriebene Aktion pro Aktion haben.
Zum Beispiel läßt vermuten, wir haben ein Modell namens Profile
und eine Aktion zu bearbeiten unser Profil. In unserer Form, haben wir ein Textfeld für unsere Website. Ohne Verwendung ModelDriven
, würden Sie getWebsite
und setWebsite
Methoden auf Ihre Wirkung haben. Mit ModelDriven
würden die Getter und Setter auf dem Modell statt aufgerufen werden. Effektiv getModel().setWebsite("http://stackoverflow.com")
.
Beispiel:
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;
}
}
Andere Tipps
Zustimmen ... sieht Modellgetriebene ähnlich wie Action in Struts1 und die Ähnlichkeit i diesem Ansatz glauben müssen, ist vorgesehen. Selbst dann, wenn u Ihr Modell haben, mit vielen Zusammensetzung würde u haben die ObjectBacked Ansatz zu folgen, die darin enthaltenen Objektwerte in dem Modell zu setzen.
Bei ModelDriven
, können Sie nur eine pojo zu einem Zeitpunkt, füllen. Sie können nicht mehrere ModelDriven
in einzelnen Action-Klasse verwenden. Da getModel()
Verfahren das Objekt des Pojo bevölkern, die in ModelDrive<Pojo>
.It angegeben werden versuchen, den Getter in diesem pojo zu finden. Der Name des Feldes sollte mit den Formularnamen angepasst werden.