Есть ли способ получить BindingResult для @RequestParam?

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

7
задан Oleg Mikheev 26 January 2012 в 14:00
поделиться