Spring MVC - HTTP-status-code 400 (Bad Request) für fehlende Feld, welches definiert ist als nicht erforderlich
Ich habe Spring-MVC-Anwendung mit dieser controller-Methode.
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addNumber(@RequestParam(value="number", required=false) Long number) {
...
return "redirect:/showAll/";
}
In meiner JSP habe ich eine standard-HTML-Formular, das ist ein posting Wert mit dem Namen "Nummer", um die controller-Methode vor. Wenn ich allerdings weglassen, wird der Wert (geben Sie nichts in das Textfeld) und POST die Daten an den controller, bevor Sie die controller-Methode aufgerufen wird, mein browser zeigt
HTTP Status 400 - Required Long parameter 'number' is not present
obwohl der controller-Methode die annotation definiert klar die "Nummer"-parameter als nicht erforderlich.
Hat jemand eine Ungefähre Vorstellung von dem, was könnte Los sein?
Danke.
PS: Ausnahme, die geworfen wird, ist wie folgt:
org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'number' is not present
EDIT: Dies ist eine Feder 3.2.3.RELEASE-bug ( siehe hier). Mit der version 3.1.4.RELEASE ich haben dieses problem nicht mehr.
Sorry, das ist ein Tippfehler übernommen aus meinem real-world-test app. Es sollte "Anzahl", wie es in den (bearbeitet) Beispiel oben jetzt.
Es ist seltsam. Ich habe gerade getestet mit 3.2.0.RELEASE und 3.2.3.RELEASE und in beiden Fällen wird Ihr code wie erwartet funktioniert.
In der Tat, das ist seltsam.
InformationsquelleAutor synRG | 2013-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Stieß ich auf die gleiche situation, und dies geschieht, wenn die parameter in der Anfrage mit einem leeren Wert.
Ist, wenn Ihr POST-Nachrichtentext enthält "number=" (leer-Wert), dann ist der Frühling wirft diese exception. Allerdings, wenn der parameter nicht vorhanden ist, überhaupt in der Anfrage, sollte es ohne Fehler funktionieren.
Dies geschieht im Frühjahr 4.1 auch. Jedoch, wenn Sie die
defaultValue
imRequestParam
annotation, wird keine Ausnahme ausgelöst.In meinem code, ich erhalte ein JSON-Objekt und das problem war, dass nicht existiert ein default-Konstruktor in das Objekt ein. Nach dem erstellen ist es, funktioniert einwandfrei!
InformationsquelleAutor Yohan Liyanage