好吧,我终于了解了模型的工作原理和
@ModelAttribute用途。这是我的解决方案。
@Controller class MyController{ @ModelAttribute("user") public User getUser(HttpServletRequest request) { return (User) request.getAttribute("user"); } @RequestMapping(value = "someurl", method = RequestMethod.GET) public String HandleSomeUrl(@ModelAttribute("user") User user) { // ... do some stuff }}getUser()标有
@ModelAttribute注解的方法将自动填充
User user标有的所有参数
@ModelAttribute。因此,当调用HandleSomeUrl方法时,调用看起来像
MyController.HandleSomeUrl(MyController.getUser(request))。至少这是我的想象。很棒的事情是,用户也可以从JSP视图进行访问,而无需任何进一步的努力。
这确实解决了我的问题,但是我还有其他问题。我可以在这些地方放置这些
@ModelAttribute方法,使它们对我所有的控制器都通用吗?我可以以某种方式从
preHandle()拦截器的方法内部添加模型属性吗?



