Apache Tiles和Spring Model对象

时间:2013-01-23 15:53:06

标签: forms spring spring-mvc apache-tiles

Header部分(Apache Tiles Attribute)由多个视图共享。它有一个表单,在页面加载时需要一个Object,如果缺少Object则会发出抱怨。目前,我将对象放入模型中,并在每次创建继承此布局的视图时使用Controller将其传递给View。

这种方法看起来相当繁琐,因为我在整个控制器上重复了一行。我希望能够添加一次并完成。

我对Apache Tiles不太熟悉,可能有一个我不知道的简单解决方案。

寻找一些有用的提示。

由于

2 个答案:

答案 0 :(得分:0)

您有几个选项可以做到这一点。在你的头顶,你可以。

  1. 使用Tiles视图编制器,simple example here
  2. 使用像Spring拦截器或AOP这样的机制自动将对象添加到模型而不是在任何地方重复代码
  3. 这实际上取决于您要添加的对象的性质以及它需要多少上下文。

答案 1 :(得分:0)

您可以使用HandlerInterceptorAdapter类和postHandle方法来实现类似的功能。通过利弊,您需要定义一个规则,帮助您了解对象何时需要添加到模型中,它可以是URL中的路径或内容,它取决于模板的组织方式。这是一个拦截器的例子,它正在做类似的事情。

拦截器防御:

<mvc:interceptors>
    <bean class="your.package.HeaderModelInterceptor"/>
</mvc:interceptors>

拦截器类:

public class HeaderModelInterceptor extends HandlerInterceptorAdapter {

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

        // Check if you need to add the object
        if (Your rule) {
            modelAndView.addObject("headerObject", headerObject);
        }

        super.postHandle(request, response, handler, modelAndView);
    }
}