0

通常在构建页面时,您会为该页面构建一个控制器,其中 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 是我唯一的选择吗?

4

1 回答 1

1

一种方法可能是实现 RequestInterceptor,但不是在每个请求上抓取文章,而是将文章列表放入会话中,然后列表只被抓取一次,保存到会话中,您只需检查列表是否已经存在于会话中。

于 2012-08-16T03:56:53.270 回答