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