
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
25.05.2013, 17:15:04
|
|||
|---|---|---|---|
Странное поведение Spring MVC при парсинге параметров |
|||
|
#18+
Допустим, есть форма, содержащая строку ввода (или скрытое поле - неважно), предназначенную для ввода числового значения, в дальнейшем Long: Код: html 1. и контроллер с методом, обрабатывающим запрос отправки формы с указанным параметром: Код: java 1. 2. 3. 4. Если в поле ввода ничего не вводить, то получим исключение: авторorg.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'entityid' is not presentПричем, включение request = false в @RequestParam ничего не даст. Но с пустой строкой можно бороться, добавив дефолтное значение в @RequestParam: defaultValue = "0", которое потом обработать. Однако если в строку ввода все же ввести не число (например, "null"), то получим исключение авторorg.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "null" То есть получается, что если делать достаточно надежную систему "от дурака", то использовать "@RequestParam Long param" нельзя, надо в любом случае получать String и уже вручную парсить в try .. catch, добавляя 5-8 строк "лишнего" кода в метод. Отсутствует логика - если параметр не может привестись к нужному типу, он по идее должен вернуть null как значение параметра. Возможно, это кому-то нужно - знать, что произошло исключение при парсинге. В этом случае есть ли механизм обработки/ловли исключения при подобном случае? Получается, что подобная проблема будет фактически для любого не-String параметра, сводя на нет удобство использования указания параметров метода. Ну, или анализ на клиенте, совершенно не подходящий для надежного приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.05.2013, 18:41:01
|
|||
|---|---|---|---|
Странное поведение Spring MVC при парсинге параметров |
|||
|
#18+
Причем, включение request = false в @RequestParam ничего не даст. Но с пустой строкой можно бороться, добавив дефолтное значение в @RequestParam: defaultValue = "0", которое потом обработать. Однако если в строку ввода все же ввести не число (например, "null"), то получим исключение авторorg.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Long'; nested exception is java.lang.NumberFormatException: For input string: "null" То есть получается, что если делать достаточно надежную систему "от дурака", то использовать "@RequestParam Long param" нельзя, надо в любом случае получать String и уже вручную парсить в try .. catch, добавляя 5-8 строк "лишнего" кода в метод. Отсутствует логика - если параметр не может привестись к нужному типу, он по идее должен вернуть null как значение параметра. Возможно, это кому-то нужно - знать, что произошло исключение при парсинге. В этом случае есть ли механизм обработки/ловли исключения при подобном случае? Получается, что подобная проблема будет фактически для любого не-String параметра, сводя на нет удобство использования указания параметров метода. Ну, или анализ на клиенте, совершенно не подходящий для надежного приложения.[/quot] Не совсем понятно, что вас так обескуражило. Во-первых можно замапить ExceptionHandler на TypeMismatchException и обрабатывать как душе угодно. Ну а -вторых, в большинстве случаев у меня одной форме соотвествует один валидатор, и никаких реквайред параметров, просто вызов validator.validate() вначале, а он уж сам разберется кто и в чем не прав) ну а на странице form:errors рулят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.05.2013, 18:56:15
|
|||
|---|---|---|---|
Странное поведение Spring MVC при парсинге параметров |
|||
|
#18+
забыл ник... можно замапить ExceptionHandler на TypeMismatchException и обрабатывать как душе угодно ... Как и где? Я не использую модель формы и валидаторы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
25.05.2013, 19:06:39
|
|||
|---|---|---|---|
Странное поведение Spring MVC при парсинге параметров |
|||
|
#18+
Вот эти ссылки могут навести вас на мысль http://pietrowski.info/2010/06/spring-mvc-exception-handler/ http://doanduyhai.wordpress.com/2012/05/06/spring-mvc-part-v-exception-handling/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&mobile=1&tid=2129286]: |
0ms |
get settings: |
21ms |
get forum list: |
25ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
60ms |
get topic data: |
25ms |
get forum data: |
6ms |
get page messages: |
91ms |
get tp. blocked users: |
3ms |
| others: | 329ms |
| total: | 574ms |

| 0 / 0 |
