我正在使用 Sitemesh 在 Spring MVC 中开发我的网站。
我可以在模板定义中包含的每个页面、菜单和页脚都更改动态内容。但是问题来了。在动态内容下方的每个站点上,都应该有一个新闻列表,其中包含来自我的数据库的一些新闻。我创建了我的@Controller,它加载了 5 条最新消息,但是如何在我的模板中添加它?什么请求映射应该实现我的新闻控制器?
我正在使用 Sitemesh 在 Spring MVC 中开发我的网站。
我可以在模板定义中包含的每个页面、菜单和页脚都更改动态内容。但是问题来了。在动态内容下方的每个站点上,都应该有一个新闻列表,其中包含来自我的数据库的一些新闻。我创建了我的@Controller,它加载了 5 条最新消息,但是如何在我的模板中添加它?什么请求映射应该实现我的新闻控制器?
我不知道 Sitemesh 是如何工作的,但我通过使用拦截器解决了这样的问题:
创建一个扩展类:HandlerInterceptorAdapter
覆盖方法postHandle并像这样填充 modelAndView 对象:
modelAndView.addObject("newslist",myNewsList);
因此,您将有一个变量$newslist注入到您的所有视图中。
不要忘记在你的 mvc-congig.xml 中声明 bean:
<bean id="newsListInterceptor" class="mypackage.NewsListInterceptor"/>
由于每个请求都会执行拦截器,因此我还使用 ehcache 来存储结果并避免在每次调用的数据库中进行选择期间。