Header部分(Apache Tiles Attribute)由多个视图共享。它有一个表单,在页面加载时需要一个Object,如果缺少Object则会发出抱怨。目前,我将对象放入模型中,并在每次创建继承此布局的视图时使用Controller将其传递给View。
这种方法看起来相当繁琐,因为我在整个控制器上重复了一行。我希望能够添加一次并完成。
我对Apache Tiles不太熟悉,可能有一个我不知道的简单解决方案。
寻找一些有用的提示。
由于
答案 0 :(得分:0)
您有几个选项可以做到这一点。在你的头顶,你可以。
这实际上取决于您要添加的对象的性质以及它需要多少上下文。
答案 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);
}
}