2017-05-05 3 views
1

Ich habe gelesen, dass das Hinzufügen von @modelAttribute in der Methode param die eingehenden Daten an das Objekt bindet und sie dem Modellobjekt als Attribut hinzufügt.Spring-Datenbindung mit und ohne @modelAttribute im Methodenparameter

@RequestMapping(value = "/list", method = RequestMethod.GET) 
public String list(@ModelAttribute User user) { 
    return "list"; 
} 

wenn diese über/Liste zugegriffen wird? Name = unnamed, in list.jsp "unnamed" kann mit {} user.name gesehen werden, da sie als Modellattribut für list.jsp hinzugefügt wurde. Das ist mir sehr klar.

Aber wenn ich

@RequestMapping(value = "/list", method = RequestMethod.GET) 
public String list(User user) { 
    return "list"; 
} 

"unnamed" tun noch {user.name} verwenden gesehen werden kann, wenn sie über/Liste zugegriffen? Name = unnamed. Ich dachte, das Benutzerobjekt wird nicht zum Modell hinzugefügt, da es keine @ModelAttribute-Annotation hat.

+0

Es wird immer noch binden, aber wie Sie behaupten, Sie können später auf Ihrer Seite nicht zugreifen (da es kein Modellobjekt ist) andere Dinge wie Zugriff Bindungsergebnis und andere Features, die für ein annotiertes Argument "@ ModelAttribute" zählen, gelten dann nicht. –

+0

Ja, es wird immer noch binden, aber mein Problem ist, dass es immer noch als Modellattribut für die list.jsp hinzugefügt wird, was nicht mein erwartetes Verhalten ist, da es keine @modelAttribute Annotation hat. – xian

Antwort

0

Sind Sie sich sicher von diesem Teil des Codes: return "list"; ???

Scheint, dass Sie die Zeichenfolge zurückgeben, nicht das Objekt. Probieren Sie es und post und beide Fälle, ich habe keine Berechtigungen, noch zu kommentieren = \

+0

Ja, ich gebe einen JSP-Namen zurück, der in eine Ansicht als list.jsp aufgelöst wird. Ich benutze Federrahmen. – xian

Verwandte Themen