对标题感到抱歉。我想不出更好的措辞。
有没有办法设置Spring提供页面的默认模型,而不首先在@RequestMapping方法中将其作为参数检索?
我正在使用方面来获取控制器方法的返回值(返回视图)并将其插入到模型中,然后渲染一个不同的全局视图,然后包含我添加到模型中的内容。这适用于请求将Model作为参数的方法。
但是,我还希望能够捕获所有未明确请求模型并仍然将返回值插入其中的方法(通过@AfterReturning建议)。有什么想法吗?
答案 0 :(得分:2)
我不会在@Autowired
上使用HttpServletRequest
因为它会混淆未来开发线程安全代码的开发人员。
相反,您应该使用@ModelAttribute
或Interceptor
。
但是你可以做这样的事情并将这个方法添加到你的控制器:
@ModelAttribute
public preloadModel(HttpServletRequest request, ModelMap model) {
//Add stuff to model.
}
public class PreloadModelInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
// add model attibutes for your view to see but not your controller
}
}
答案 1 :(得分:0)
好吧,我找到了解决方法。或者也许是底层Spring框架正在做的所有事情。我只是在HttpServletRequest中自动装配并调用了setAttribute。似乎工作正常。