通常在构建页面时,您为该页面构建一个控制器,其中RequestMapping绑定到URL以及RequestMethod.GET,您可以在其中设置需要在页面上显示的变量。
我所拥有的是一个新闻小部件,它将显示在每个页面上,如果它只显示在一个页面上,我会做的事情如下:
@Controller
@RequestMapping("/news")
public class NewsController {
@RequestMapping(method = RequestMethod.GET)
public String setupForm(
HttpServletRequest request,
@Valid @ModelAttribute("RA") RA ra,
ModelAndView modelAndView,
Model model) {
// do some stuff to ra, put values in model, ....
}
}
在JSPX页面上,我有类似的东西:
<c:forEach var="article" items="${newsarticles}" >
<h1>${article.title}</h1>
${article.body}
<br />
</c:forEach>
我正在尝试解决的问题是如何在所有页面甚至主模板中复制上述JSPX片段,而不必在RequestMapping中明确列出大量URL。
在JSF中我会简单地使用#{newsBean.newsarticles},它可以在所有页面上使用。
请求拦截器可以工作,但有没有更好的方法可以在没有RequestInterceptor的情况下执行此操作,或者RequestInterceptor是我唯一的选择吗?
答案 0 :(得分:1)
一种方法可能是实现RequestInterceptor,但不是在每个请求上抓取文章,而是将文章列表放入会话中,然后列表只被抓取一次,保存到会话中,您只需检查是否该列表已存在于会话中。