Spring MVC defaultValue для Double - PullRequest
3 голосов
/ 13 мая 2010

Я пытаюсь построить контроллер следующим образом:

@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?

1 Ответ

0 голосов
/ 13 мая 2010

Скорее всего, вам придется использовать собственный CustomEditor, который будет реализовывать вашу логику преобразования.

С точки зрения запроса, URL-адрес, подобный /activities.do?userCash=&, означает, что параметр userCash на самом деле является пустой или пустой строкой (отсюда и ваша ошибка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...