jeśli mam mapowanie żądań podobne do następującego:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
A następnie zadzwoń do tej prośby z:
http://example.com/test?i=
Otrzymuję komunikat o błędzie
Nie udało się przekonwertować wartości typu „java.lang.String” na typ „int”; zagnieżdżony wyjątek to java.lang.NumberFormatException: Dla ciągu wejściowego: "" '
Mogę rozwiązać ten problem, powstrzymując klienta javascript przed wysyłaniem pustych parametrów lub akceptując wartości ciągów i analizując je tylko wtedy, gdy nie okaże się, że są puste.
AKTUALIZACJA : Późniejsze wersje wiosny implementują teraz pierwotnie pożądane zachowanie.
Właśnie przetestowałem to na wiosnę 4.3.5 i stwierdziłem, że to zachowanie w rzeczywistości zmieni wartość null na wartość domyślną bez podnoszenia a NumberFormatException
, zatem; moje oryginalne mapowanie działa teraz dobrze.
Nie jestem pewien, w której wersji wiosny dokonano tej zmiany zachowania.
String
typ. user902383, to jest poprawne, chociaż dla wartości całkowitej wolałbym, aby wartość null / pusta używała zamiast tego defaultValue.