问题反馈: jfinal 3.8 Controller多层继承无法暴露问题? 该特性在jfinal3.5中正常
问题描述:
举例:
继承关系如下:ControllerA extends ControllerB
ControllerB extends ControllerC
ControllerC extends Controller
在ControllerB中写的public方法无法访问,报错404
将jfinal版本切换到3.5正常
routes.setMappingSuperClass(true);
在升级文档中有过说明:
https://www.jfinal.com/doc/14-1
这是一个性能优化,默认不对超类中的方法进行迭代生成路由
如果希望既可以对超类进行路由映射,又能保留这个优化,可以在其子路由中配置:
public class SubRoutes extends Routes {
public void config() {
setMappingSuperClass(true);
add(...);
}
}
上面的 SubRoutes 是子路由,只在这个子路由中其添加的 controller 进行超类映射,其它路由不影响,最后配置:
public void configRoute(Routes me) {
me.add(new SubRoutes());
me.add(new OtherRoutes());
}
一般情况,你要省事的话,直接:
public void configRoute(Routes me) {
me.setMappingSuperClass(true);
me.add(...);
}