Raj*_*dra 7 spring-mvc jackson
我正在做AngularJS和Spring REST应用程序.这是我的代码.
@RestController
@RequestMapping("/user")
// @Secured("ROLE_ADMIN")
public class UserController
{
@RequestMapping(value = "/verifyUser", method = RequestMethod.POST)
public Boolean verifyUser(@RequestBody User user)
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果 user对象格式不正确,则浏览器 400 (Bad Request)
显示Eclipse控制台中没有显示其他错误.我只是想知道如果user对象的格式不正确,反序列化中会出现什么确切的错误 .
如果您不想使用自定义objectMapper,或者您不想将其String用作方法输入,则可以使用spring ExceptionHandler.只需将以下方法添加到控制器中,然后您就可以在控制台中看到jackson数据绑定错误.
@ExceptionHandler(HttpMessageNotReadableException.class)
@ResponseStatus(value=HttpStatus.BAD_REQUEST, reason="There was an error processing the request body.")
public void handleMessageNotReadableException(HttpServletRequest request, HttpMessageNotReadableException exception) {
System.out.println("\nUnable to bind post data sent to: " + request.getRequestURI() + "\nCaught Exception:\n" + exception.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
spring documentation: Spring MVC中的语句处理
如果你想忽略一些无用的jackson异常,你可以在springframework中使用你自己的jackson ObjectMapper.看到这个答案.
转换您的方法如下.使用ObjectMapper将JSON转换为对象,因此在转换它时会抛出异常,您将能够识别问题.
@RequestMapping(value = "/verifyUser", method = RequestMethod.POST)
public Boolean verifyUser(@RequestBody String json)
{
try{
ObjectMapper om = new ObjectMapper();
User user = om.readValue(json, User.class);
}
catch(Exception e){
e.printStackTrace()
}
// Write your logic.....
return ....;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |