Проверка @RequestBody весной 3.0.5 - PullRequest
2 голосов
/ 13 ноября 2011

У меня есть контроллер REST, и я пытаюсь убедиться, что тело запроса действительно того типа, который, я думаю, будет.

Например:

@Controller
public class myController{

   @RequestMapping(method=RequestMethod.POST, value = "/addFoo", headers="...")
   public @ResponseBody String addFoo(@RequestBody Foo){
   ...code to add a new Foo
   }
}


К сожалению, кто-то может опубликовать объект Bar вместо объекта Foo, и я хочу перехватить это вхождение и вернуть строго сформулированное сообщение о запрете моего Foo - вместо того, чтобы Spring выдавал ошибку отображения и возвращал 500 Internal Server Error.

Какой лучший способ справиться с этим?
Я использую Spring 3.0.5.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011

Если вы не связаны с 3.0.x, я могу предложить вам обновить версию 3.1, которая была завершена в прошлом месяце.

Это новая функция, добавленная в Spring версии 3.1. См. Проверка правильности аргументов метода @RequestBody

0 голосов
/ 16 ноября 2011

Вы можете обработать исключение как это

@Controller
public class SimpleController {

  // other controller method omitted

  @ExceptionHandler(IOException.class)
  public String handleIOException(IOException ex, HttpServletRequest request) {
    return ClassUtils.getShortName(ex.getClass());
  }
}

или определив HandlerExceptionResolvers

, оба задокументированы здесь:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers

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