Я использую 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
необязательным и указать ему значение по умолчанию - не помогло.