代码如下:
@RequestMapping(value = "/help/{id}", method = RequestMethod.GET)
public ModelAndView welcome(@PathVariable(name="id", required = false) String id, HttpServletRequest req, Model m) {
logger.log(Level.SEVERE, "I'm hit..................................");
req.setAttribute("id", id);
ModelAndView mv = new ModelAndView();
mv.setViewName("MyView.jsp");
return mv;
}
MyView.jsp
只要我不使用 @PathVariable.
就不会显示 404 日志消息一直打印,即使是 404,所以控制器方法总是被调用。
您应该更新项目中的 Spring 版本以允许使用
@PathVariable
注释的可选参数。
我们可以通过使用从 Spring 4.3.3 开始的 required 属性使
可选@PathVariable
在您的代码中,您应该进行更改
@GetMapping("/help/{id}")
@ResponseBody
public String welcome(@PathVariable(required = false) String id, HttpServletRequest req) {
logger.log(Level.SEVERE, "I'm hit..................................");
return "ID: " + id;
}