Я использую Spring 3 Portlet MVC. Проверка / привязка только в MVC должна быть одинаковой.
У меня есть только одно поле формы int
. Когда я делаю
void doSmth(MyForm form, BindingResult bindingResult) throws ... {
int bindErrors = bindingResult.getErrorCount())
...
и отправка значения поля, которое не может быть проанализировано как int
, этот метод выполняется, и bindErrors
равно 1. Значение поля формы, которое получает этот метод, равно 0. Это здорово.
Но создавать форму, содержащую только одно поле, не очень хорошо.
Я меняю код на:
void doSmth(@RequestParam int userId, BindingResult bindingResult) ... {
int bindErrors = bindingResult.getErrorCount())
...
и получение Портлет недоступен сообщение в браузере и это исключение:
org.springframework.web.portlet.FrameworkPortlet processRequest Could
не полный запрос
org.springframework.beans.TypeMismatchException: не удалось преобразовать
значение типа 'java.lang.String' в требуемый тип 'int'; вложенными
исключение java.lang.NumberFormatException: для входной строки: "q"
Вопрос: есть ли способ продолжить выполнение метода и обработать в нем ошибки привязки, даже если преобразование типа @RequestParam
завершится неудачно? Я попытался сделать @RequestParam
необязательным и указать для него значение по умолчанию - не помогло.