我有这个控制器
@Controller
@RequestMapping(value = "/v1.0/user")
public class UserController {
@RequestMapping(value = "/findOne/{id}", method = RequestMethod.GET)
public @ResponseBody String findOne(@PathVariable("id") Integer id) {
log.info("findOne");
return "found URL";
}
}
哪个匹配网址:http://localhost:8080/v1.0/user/findOne/4
但是如果我的路径变量不正确:http://localhost:8080/v1.0/user/findOne/4A
我一无所获。甚至没有错误。好像Spring吞下了URL。
我添加了
@RequestMapping(value = "/.*", method = RequestMethod.GET)
public @ResponseBody String redirectEverythingOtherThanTest(){
log.info("no url matched");
return "badly formed URL for Users";
}
我再一无所获。我想要完成的是每个Controller在URL不匹配时都有唯一的消息。
答案 0 :(得分:0)
在我的每个Controller类的最后,我添加了
@ExceptionHandler(Exception.class)
public @ResponseBody String handleException(Exception e, HttpServletRequest request, HttpServletResponse response) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
return e.getMessage();
}
这将捕获所有异常,我可以将其视为一个全部捕获。