Wenn ich eine Anforderungszuordnung habe, die der folgenden ähnelt:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
Und dann rufen Sie diese Anfrage mit:
http://example.com/test?i=
Ich erhalte die Fehlermeldung
Fehler beim Konvertieren des Werts vom Typ 'java.lang.String' in den Typ 'int'; verschachtelte Ausnahme ist java.lang.NumberFormatException: Für Eingabezeichenfolge: "" '
Ich kann dies lösen, indem ich entweder den Javascript-Client daran hindere, leere Parameter zu senden, oder indem ich Zeichenfolgenwerte akzeptiere und nur analysiere, wenn sie nicht leer sind.
UPDATE : Spätere Versionen von Spring implementieren jetzt das ursprünglich gewünschte Verhalten.
Ich habe dies gerade im Frühjahr 4.3.5 getestet und festgestellt, dass das Verhalten nun tatsächlich den Nullwert in den Standardwert umwandelt, ohne a zu erhöhen NumberFormatException
. Mein ursprüngliches Mapping funktioniert jetzt einwandfrei.
Ich bin nicht sicher, in welcher Version des Frühlings diese Verhaltensänderung vorgenommen wurde.
String
Typ. user902383, das ist richtig, obwohl ich für einen ganzzahligen Wert bevorzugen würde, dass ein null / leerer Wert stattdessen den defaultValue verwendet.