原谅本人没时间作测试,只是个想法就发来问了。
背景是这样,一个项目,分前后台,而我希望前台一个全局拦截器,后台另一个全局拦截器。
首先,配置里有以下配置,
@Override public void configRoute(Routes me) { me.setBaseViewPath("/WEB-INF/views"); RouteFnConfig.conf(me); RouteAdminConfig.conf(me); }
那么,我的问题就是,我能不能在RouteFnConfig里配一个全局拦截器FnInt.class,它只拦截在RouteFnConfig里定义的路由。而不会对后台RouteAdminConfig配的路由作拦截(也不用clear)。然后,我还会在RouteAdminConfig再配另一个全局拦截器。
一句话就是说,全局拦截器,能不能限定个小全局?(这句说得好矛盾!)
1:将路由拆分为前端的后端两部分
class FrontRoutes extends Routes {
public void config() {
// 关键在这里,下面的拦截器会拦截所有 FrontRoutes 中配置的控制器
addInterceptor(new FrontInterceptor());
add("/", IndexController.class);
}
class AdminRoutes extends Routes {
// 这里配置后端拦截器
addInterceptor(new AdminInterceptor());
add("/admin", AdminIndexController.class);
}
2:在configRoute 中再汇总:
configRoute(Routes me) {
me.add(new FrontRoutes());
me.add(new AdminRoutes());
}
不仅可以分别对拆分的 FrontsAdmin、AdminRoutes 配置不同的拦截器,还可以配置不同的 me.setBaseViewPath(...),非常有利于实际的开发需求
路由的拆分还可以在多人团队开发时,为不同的团队分配不同的 Routes,统一规范路由,各自修改自己分到手的 Routes,可以避免在 git、svn 提交时造成代码冲突