那么,我终于明白了一些模型的工作原理,以及@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
}
}
标有@ModelAttribute注释的getUser()方法将自动填充标记为@ModelAttribute的所有用户用户参数。所以当调用HandleSomeUrl方法时,调用看起来像MyController.HandleSomeUrl(MyController.getUser(request))。至少这是我想象的。很酷的是,用户也可以从JSP视图访问,无需任何进一步的努力。
这完全解决了我的问题,但是我还有其他问题。有没有一个共同的地方,我可以把这些@ModelAttribute方法,所以他们是所有我的控制器是常见的?我可以从拦截器的preHandle()方法里面添加模型属性吗?