Я пытаюсь построить контроллер следующим образом:
@RequestMapping(method = {RequestMethod.GET}, value = "/users/detail/activities.do")
public View foo(@RequestParam(value = "userCash", defaultValue="0.0") Double userCash)
{
System.out.println("foo userCash=" + userCash);
}
Это отлично работает:
http://localhost/app/users/detail/activities.do?userCash=123&
но в этом userCash == ноль, несмотря на значение по умолчанию
http://localhost/app/users/detail/activities.do?userCash=&
Из некоторого копания кажется, что первый работает b / c привязки редактора следующим образом:
binder.registerCustomEditor(Double.class, new CustomNumberEditor(Double.class, false));
Проблема в том, что второй параметр (т. Е. False) определяет, допускаются ли пустые значения. Если я установлю это в true, то система считает пустой ввод действительным, поэтому я получаю нулевой класс Double.
Если я установил значение false, то система задушит пустую строку ввода с помощью:
org.springframework.beans.TypeMismatchException:
Не удалось преобразовать значение типа
'java.lang.String' в требуемый тип
«Двойной»; вложенное исключение
java.lang.NumberFormatException: пусто
Строка
Кто-нибудь знает, как заставить defaultValue работать для Doubles?