Spring MVC Annotation-Based Controller command-Objekt zu verlieren Werte auf POST
Bin ich laden einen user Objekt meiner Berufung zu einem Dienst und speichern Sie dann diesen Benutzer als ein command-Objekt in der Modell ERHALTEN Sie in den controller. Das user-Objekt hat viele Eigenschaften, die nicht zugeordnet werden in die jsp-Seite. Nach dem Absenden des Formulars bekomme ich das command-Objekt, das ich den controller auf POST. Aber seltsam, ich sehe nur die Eigenschaften des command-Objekts, das abgebildet werden, um die jsp-Seite. Alle anderen Eigenschaften waren es, wenn ich laden Sie das Objekt verloren. Ich brauche alle Eigenschaften im Objekt-in der Lage sein, um erfolgreich zu speichern es in die Datenbank.
Kann jemand mir helfen herauszufinden problem? Danke!
Update
Ich bin das hinzufügen einiger code besser zu verstehen. In der POST-handler, erwartete ich das command-Objekt alle Eigenschaften, die geladen wurde, in GET-handler zusätzlich zu den Eigenschaften, die gebunden sind mit jsp. Stattdessen bin ich verlieren alle propeties Ausnahme derjenigen, die gebunden sind an die jsp. Mache ich etwas falsch hier?
@RequestMapping(method = RequestMethod.GET)
public String showForm(ModelMap model, HttpSession session, HttpServletRequest request) throws Exception {
UserBean user = Util.getUser(session);
UserBean command = (UserBean)userProfileService.loadByUserName(user.getUserName());
model.addAttribute("command", command);
return formView;
}
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("command") UserBean command, BindingResult result, HttpSession session) throws Exception {
UserBean user = (UserBean) command;
userProfileService.saveUser(user);
return "successView";
}
Update
Ich bin das hinzufügen einiger code besser zu verstehen. In der POST-handler, erwartete ich das command-Objekt alle Eigenschaften, die geladen wurde, in GET-handler zusätzlich zu den Eigenschaften, die gebunden sind mit jsp. Stattdessen bin ich verlieren alle propeties Ausnahme derjenigen, die gebunden sind an die jsp. Mache ich etwas falsch hier?
@RequestMapping(method = RequestMethod.GET) public String showForm(ModelMap model, HttpSession session, HttpServletRequest request) throws Exception { UserBean user = Util.getUser(session); UserBean command = (UserBean)userProfileService.loadByUserName(user.getUserName()); model.addAttribute("command", command); return formView; }
@RequestMapping(method = RequestMethod.POST) public String onSubmit(@ModelAttribute("command") UserBean command, BindingResult result, HttpSession session) throws Exception { UserBean user = (UserBean) command; userProfileService.saveUser(user); return "successView"; }
Update
Wenn ich das command-Objekt in der session wie würde der jsp binden die propeties. Ich dachte, ich brauchte, um es zu speichern in Modell?
Könnten Sie bitte erklären.
Update
speichern Sie das command-Objekt in der session löst das problem. Ich war in der Lage, um es zu speichern, indem Sie mit
@SessionAttributes ("command")
Vielen Dank!
InformationsquelleAutor Mitu | 2010-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist das erwartete Verhalten. Spring nicht nehmen Sie Ihre vorhandenen Objekt (wie würden Sie es bekommen?) - es entsteht eine neue ein und füllt es mit Daten.
Können Sie die
@ModelAttribute
kommentiert-Methode, um anzugeben, eine Methode, die geladen werden, die das vorhandene Objekt aus dem Speicher (db?) durch seine ID (eingereicht).Sehen 15.3.2.8 des MVC-docs
InformationsquelleAutor Bozho
Dem Spring-MVC -
Model
Werte werden anforderungsbereich Attribute im JSP. Dies ist eine ein-Weg-übersetzung, Spring-MVC nicht wieder dieModel
Werte, wenn der Nutzer ein Formular aus Ihrer Seite.Wenn ich brauche, um Informationen zu speichern, die zwischen einem GET und eine POST (das ist, was auf eine sich und Lesen Sie es zurück zu einem POST), habe ich ein Session-Attribut.
In deinem Fall glaube ich, dass Sie benötigen, um führen Sie einen der folgenden Schritte aus:
Util.getUser(session);
imonSubmit
Methode.command
Objekt in der Sitzung, in dershowForm
und rufen es in dieonSubmit
Methode>InformationsquelleAutor DwB
@ModelAttribute wird verwendet, um direkt die Werte in der Studenten-Objekt aus der jsp, andere weisen in die servlet-Sie haben, um die Eigenschaften mit der Anfrage.getattribute() und als call-student setter-Methode.
so kann u verwenden Sie die keywords in der jsp-Seite.
oder
InformationsquelleAutor madhi vanan