jfinal 3.8 Controller多层继承无法暴露,访问404

问题反馈: jfinal 3.8 Controller多层继承无法暴露问题? 该特性在jfinal3.5中正常

问题描述:

   举例:

     继承关系如下:ControllerA extends ControllerB

                            ControllerB extends ControllerC

                            ControllerC extends Controller

    在ControllerB中写的public方法无法访问,报错404

    将jfinal版本切换到3.5正常


评论区

JFinal

2019-04-18 10:58

要配置一下:
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(...);
}

jasun

2019-04-18 11:00

@JFinal 嗯,好的,谢谢波哥!

热门反馈

扫码入社