2015-04-22 6 views
6

Ich bin neu im Spring Framework, und als ein Symptom möchte ich meine Annahme von Web-MVC-Teilen so einfach wie möglich halten, also verwende ich die Annotation-Funktionen, um mit Spring zu arbeiten. In der Vergangenheit habe ich verwendet:
int value = Integer.valueOf(request.getParameter("numberValue"))
, um Werte aus Parametern zu ziehen - explizit die Zeichenfolge konvertiert von getParameter() zurückgegeben.
Hilfe, ich habe festgestellt, dass, wenn ich die Terminologie von Spring:
@RequestParameter("numberValue") int numVal
die Konvertierung wird automatisch behandelt. Das ist schön, aber eine "Black Box" für mich. Ich habe versucht, Fragen hier oder in der Spring-Dokumentation zu lesen, aber all diese Informationen behandeln benutzerdefinierte Konvertierungen (wie Converter) für Objekte oder Formatierungsprobleme. Ich möchte nur wissen, wie Spring primitive Typumwandlungen für @RequestParam standardmäßig behandelt.Wie konvertiert Spring MVC @RequestParam-Werte?

Antwort

8

Ich habe bemerkt, dass, wenn ich Spring Terminologie verwenden: @RequestParameter ("numberValue") int NUMVAL die Umwandlung automatisch.

Hier können Sie suchen nach Typumwandlung

Wie pro Feder Dokumentation auf diese link

gegeben

String-basierten Werten aus der Anfrage einschließlich Anfrage extrahierten Parameter, Pfadvariablen, Request-Header, und Cookie-Werte können in den Zieltyp des Methodenparameters oder -Felds konvertiert werden (z. B. Binden eines Anforderungsparameters an ein Feld in einem @ModelAttribute) Parameter) an die sie gebunden sind. Wenn der Zieltyp nicht String ist, wird Spring automatisch in den entsprechenden Typ konvertiert. Alle einfache Typen wie Int, Long, Date usw. werden unterstützt.

+0

Vielleicht offtopic: Was passiert, wenn ich vergessen habe, den Parameter zu übergeben, und ich versuche, es in einem primitiven zu speichern. Ich denke, als Faustregel sollten wir Params immer in String oder einer Wrapper-Klasse speichern. – saran3h