Validation @spring 3.0.5中的RequestBody验证
我有一个REST控制器,并试图确保请求主体是我认为它将是的类型 例如:Validation @spring 3.0.5中的RequestBody验证,validation,rest,spring-mvc,Validation,Rest,Spring Mvc,我有一个REST控制器,并试图确保请求主体是我认为它将是的类型 例如: @Controller public class myController{ @RequestMapping(method=RequestMethod.POST, value = "/addFoo", headers="...") public @ResponseBody String addFoo(@RequestBody Foo){ ...code to add a new Foo } }
@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个内部服务器错误 处理这个问题的最佳方法是什么?
我使用的是Spring 3.0.5。您可以像这样处理异常
@Controller
public class SimpleController {
// other controller method omitted
@ExceptionHandler(IOException.class)
public String handleIOException(IOException ex, HttpServletRequest request) {
return ClassUtils.getShortName(ex.getClass());
}
}
或者通过定义HandlerExceptionResolver
此处记录了这两种情况:
您可以像这样处理异常
@Controller
public class SimpleController {
// other controller method omitted
@ExceptionHandler(IOException.class)
public String handleIOException(IOException ex, HttpServletRequest request) {
return ClassUtils.getShortName(ex.getClass());
}
}
或者通过定义HandlerExceptionResolver
此处记录了这两种情况:
如果您不受3.0.x的约束,我可以建议您使用上个月定稿的ugprade 3.1
它是Spring3.1版中新增的功能。请参见如果您不受3.0.x的约束,我可以建议您使用ugprade 3.1,该版本已于上个月定稿 它是Spring3.1版中新增的功能。请看