@ModelAttribute und @SessionAttribute im Frühjahr
Als Frühling-Spezifikation heißt es:, @ModelAttribute wird ausgeführt, bevor die mapping-Prozedur und @SessionAttribute halten Sie die Modell-Attribut in der session.
Betrachten Szenario: form-bean erstellt wird, nachdem der controller aufgerufen wird und als session-Attribut als auch. Das nächste mal MenuController genannt wird, wie CreateForm im() wird erneut ausgeführt, und erstellen Sie eine weitere neue form-bean. Meine Frage ist: wird das aktuelle Formular erstellt bean als session-Attribut? und die form-bean wird binden Sie den parameter in der Methode bookList()?
Hoffe Euch helfen können. Danke.
@Controller
@RequestMapping("/store")
@SessionAttribute("form")
public class MenuController {
@ModelAttribute("form")
public Form createForm() {
return new Form();
}
@RqeustMapping("/book")
public String bookList(@ModelAttribute("form") Form form){
//processing the form
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denken Sie daran, dass Ihre Zuordnung verallgemeinert werden. Es werden anzeigen sowohl auf eine GET-Methode und POST-Methode.
Dem session-Attribut den Wert des @ModelAttribute("form"), das von der Methode wie CreateForm im.
Dem session-Attribut Vorrang vor dem @ - Modell-Attribut aus wie CreateForm im Methode.
Ist es hilfreich sich daran zu erinnern, dass die @ModelAttribute ausgeführt wird, bevor die mapping-Prozedur.
Wenn die
bookList
Methode wird aufgerufen, erstmals in einer Sitzung, dann die Methode mit@ModelAttribute('form)
aufgerufen wird, der zurückgegebene Wert (Form-Objekt) gefüllt ist, inHttpSession
und diebookList
Methode mit der gleichen Form-Objekt aufgerufen wird.Für nachfolgende Anfragen innerhalb der gleichen
HttpSession
Frühling ruft die gleichen Form-Objekt aus der session und nicht die Methode aufrufen mit@ModelAttribute('form')
wieder bis zum Ende der Sitzung.Nach jedem Ende der
bookList
method invocation Feder speichert aktualisierte version des Form-Objekts inHttpSession
.Wenn du mit Spring-Boot-2.x Sie können die debug - DefaultSessionAttributeStore#retrieveAttribute Methode zu verstehen, dieses Verhalten.
den sessionAttribute zeigt an, dass die "form" gespeichert werden, der in der Sitzung. nicht gemeint ist die "form" wird abgerufen, aus der Sitzung.