带有Apache Tiles的Spring MVC 3.0 - 一个页面中的多个表单

时间:2011-07-20 12:53:36

标签: spring-mvc apache-tiles multiple-forms

我在我的项目中使用带有apache tile的spring mvc(3.0)。我在通过磁贴渲染的单个页面中有多个表单。

登录表单和搜索表单对大多数页面都是通用的。图块定义中的“主体”不断变化。

因此,如下所示,在我的所有mvc控制器中,我必须在相应的模型中显式设置命令对象。 1. model.put(“userBO”,userBO); 2. model.put(“searchBO”,searchBO);

有没有办法可以将这部分代码移动到公共位置或全局控制器,这样我就不必在我写的所有控制器中写这两行了?

1 个答案:

答案 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>