если у меня есть сопоставление запроса, похожее на следующее:
@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
И затем вызовите этот запрос с помощью:
http://example.com/test?i=
Я получаю сообщение об ошибке
Не удалось преобразовать значение типа 'java.lang.String' в тип 'int'; inested exception is java.lang.NumberFormatException: для строки ввода: ""
Я могу решить это, либо остановив javascript-клиент от отправки пустых параметров, либо приняв строковые значения, и только разбор, если они не считаются пустыми.
UPDATE: более поздние версии spring теперь реализуют изначально желаемое поведение.
Я только что протестировал это в spring 4.3.5 и обнаружил, что теперь поведение фактически превратит нулевое значение в значение по умолчанию, не поднимая NumberFormatException
, таким образом; мое исходное отображение теперь отлично работает.
Я не уверен, в какой версии spring было сделано это изменение поведения.