这两天在看一个老项目,用的SpringMVC+JSP。因为很久没看SpringMVC,在看一个Controller的时候竟然看不懂了哈哈哈哈~
Controller:
@Controller
@RequestMapping("example")
@FunctionId("F001")
public class ExampleController {
@Autowired
private ExampleService exampleService;
@RequestMapping(method = RequestMethod.GET)
public String showPage() {
return "default";
}
@ModelAttribute("ui")
public UiObject ui(HttpServletRequest request, HttpSession session) throws ServletRequestBindingException {
return new UiObject();
}
@ModelAttribute
public void referenceData(HttpServletRequest request, Model model) {
model.addAttribute("attribute", exampleService.getAttribute("KEY"));
}
}
看不懂的是referenceData
这个接口,因为他没有映射路径。
后面查了一下才知道他不是一个接口,而是一个前置方法!
也就是当你请求这个Controller任意一个接口,如这里的showPage
/ui
的时候,会先调用这个referenceData
去给Model
填充数据,然后再走对应接口的流程。神奇!