我在我的项目中使用带有apache tile的spring mvc(3.0)。我在通过磁贴渲染的单个页面中有多个表单。
登录表单和搜索表单对大多数页面都是通用的。图块定义中的“主体”不断变化。
因此,如下所示,在我的所有mvc控制器中,我必须在相应的模型中显式设置命令对象。 1. model.put(“userBO”,userBO); 2. model.put(“searchBO”,searchBO);
有没有办法可以将这部分代码移动到公共位置或全局控制器,这样我就不必在我写的所有控制器中写这两行了?
答案 0 :(得分:2)
您可以使用拦截器在postHandle中执行此操作:
public class DefaultModelInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler,
final ModelAndView modelAndView) throws Exception {
modelAndView.addObject("userBO", userBO);
modelAndView.addObject("searchBO", searchBO);
super.postHandle(request, response, handler, modelAndView);
}
}
然后可以在Spring servlet配置中连接:
<mvc:interceptors>
<bean class="my.package.DefaultModelInterceptor"/>
</mvc:interceptors>