1

Header 部分(Apache Tiles 属性)由多个视图共享。它有一个表单,当页面加载时需要一个对象,如果缺少对象就会抱怨。目前,我将对象放置在模型中,并在每次创建继承此布局的视图时使用控制器将其传递给视图。

这种方法似乎相当乏味,因为我在控制器上重复了几行。我希望能够添加一次并完成。

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

寻找一些有用的提示。

谢谢

4

2 回答 2

0

你有几个选择来做到这一点。从我的头顶上你可以。

  1. 使用 Tiles 视图准备器,这里的简单示例
  2. 使用 Spring 拦截器或 AOP 等机制自动将对象添加到模型中,而不是到处重复代码

这实际上取决于您要添加的对象的性质以及它需要多少上下文。

于 2013-01-23T16:10:05.703 回答
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);
    }
}
于 2013-01-23T16:16:42.890 回答