Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupported...
阿新 • • 發佈:2018-12-14
@Controller 註解類中,方法使用 @RequestBody 註解接收表單提交的引數丟擲異常。
@PostMapping(value = "/user/search")
public ModelAndView searchUser(@RequestBody UserQueryDTO queryDTO) {
log.info("Search User Request : {}", queryDTO);
if (queryDTO == null) throw new RequestParamException();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("user/list");
Page<UserDTO> userDTOPage = userServiceImpl.searchUser(queryDTO, 0, 10);
modelAndView.addObject("queryDTO", queryDTO);
modelAndView.addObject("userDTOPage", userDTOPage);
return modelAndView;
}
伺服器丟擲如下異常:
2018-10-10 11:04:58.203 WARN 3092 --- [nio-8081-exec-9] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved exception caused by Handler execution: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
介面顯示異常:
There was an unexpected error (type=Unsupported Media Type, status=415). Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported
原來 @RequestBody 註解常用來處理 content-type 是 application/json 編碼的內容,而不能用來處理 application/x-www-form-urlcoded 編碼的內容。這裡可以使用 @ModelAttribute 註解代替。
@PostMapping(value = "/user/search")
public ModelAndView searchUser(@ModelAttribute UserQueryDTO queryDTO) {
log.info("Search User Request : {}", queryDTO);
if (queryDTO == null) throw new RequestParamException();
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("user/list");
Page<UserDTO> userDTOPage = userServiceImpl.searchUser(queryDTO, 0, 10);
modelAndView.addObject("queryDTO", queryDTO);
modelAndView.addObject("userDTOPage", userDTOPage);
return modelAndView;
}
參考文章: