在spring MVC上实现通用功能的推荐方法是什么?

时间:2013-08-02 16:56:13

标签: spring spring-mvc

假设我想在ASP.NET方面做后面的Masterpage代码做同样的事情。我正在学习Spring MVC,我正在使用JSP来查看我的观点。我知道对于JSP方面,每次创建页面时我都会包含header.jsp和footer.jsp。

让我说我的头文件中有这个var.jsp $ {ItemsQty}我必须在所有控制器请求映射中将其插入以获取值。

model.addAttribute("ItemsQty", ItemsServices.count());

设置此值的正确方法是什么?在所有控制器中添加属性,所有请求方法?

问候。

2 个答案:

答案 0 :(得分:0)

  

设置此值的正确方法是什么?在所有控制器中添加属性,所有请求方法?

没有。这些属性是会话范围的属性。会话范围属性在Spring MVC中使用@SessionAttributes指定。所以在你的情况下它将是

@SessionAttributes({"ItemsQty"})

因此,当您第一次向模型添加“ItemsQty”时,它将保留在那里(跨多个请求),直到调用SessionStatus.setComplete()

答案 1 :(得分:0)

您可以创建一个拦截器,将属性添加到模型图中。拦截器可以映射到您喜欢的任何URL。

<mvc:annotation-driven>
    <mvc:interceptors>
        <mvc:mapping path="/items/**" />
        <bean="my.package.items.ItemsInterceptor"/>
    </mvc:interceptors>
</mvc:annotation-driven>

当网址与映射/items/**匹配时,此拦截器会在调用处理程序后将属性添加到模型图

class ItemsInterceptor extends HandlerInterceptorAdapter {

    @Autowired
    private ItemsServices service;

    public void postHandle(
                HttpServletRequest request,
                HttpServletResponse response,
                Object handler,
                ModelAndView modelAndView) 
                throws Exception {

        if (modelAndView != null) {
            modelAndView.addObject("ItemsQty", service.count());
        }
    }
}