0

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

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

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

有没有办法可以将这部分代码移动到一个共同的地方或全局控制器,这样我就不必在我编写的所有控制器中编写这两行?

4

1 回答 1

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>
于 2012-05-14T11:42:48.247 回答