Spring MVC - 在多个页面中重用小部件

时间:2012-08-15 19:01:22

标签: spring-mvc jspx

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

1 个答案:

答案 0 :(得分:1)

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