если у меня есть сопоставление запроса, подобное следующему:
@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; вложенное исключение - java.lang.NumberFormatException: для входной строки: "" '
Я могу решить эту проблему, либо запретив клиенту javascript отправлять пустые параметры, либо приняв строковые значения и выполняя синтаксический анализ только в том случае, если они не обнаружены как пустые.
ОБНОВЛЕНИЕ : более поздние версии Spring теперь реализуют изначально желаемое поведение.
Я только что протестировал это в Spring 4.3.5 и обнаружил, что теперь поведение фактически превратит нулевое значение в значение по умолчанию без повышения a NumberFormatException
, таким образом; мое исходное отображение теперь работает нормально.
Я не уверен, в какой версии весны было сделано это изменение поведения.
String
типа. user902383, это правильно, хотя для целочисленного значения я бы предпочел, чтобы вместо значения null / empty использовалось defaultValue.