jfinal路由问题

刚学习JFinal,看到手册中的路由规则,访问默认 的index方法没问题,但是访问另外的方法怎么也访问不到。这个是我要访问的controller

j2.png

设置路由/hello没问题,能访问到index。但是设置/hello/login也是去调用index方法的。还有参数也是同样获取不到的,设置/hello/1-2,然后在index方法中获取是null。是我配置路由方法的方式不对吗?

评论区

JFinal

2016-08-31 16:53

最有可能的原因是没有自动编译, login 方法没有生效,建议重启一下

tg

2016-08-31 17:17

@JFinal 重新编译过了还是一样,好像是将整个String当成controllerKey了

JFinal

2016-08-31 17:21

贴出控制台输出的 jfinal action report,看里面访问的到底是什么

JFinal

2016-08-31 17:21

以及看一下是否有拦截器干扰

tg

2016-08-31 17:23

@JFinal JFinal action report -------- 2016-08-31 17:22:23 ------------------------------
Controller : com.hukai.demo.HelloController.(HelloController.java:1)
Method : index
--------------------------------------------------------------------------------这是访问/hello/login的,没有配置拦截器

tg

2016-08-31 17:24

@JFinal me.add("hello/login", HelloController.class);路由配置

JFinal

2016-08-31 17:26

如果这样的话,问题可以确定了,项目现在加载的类文件不是最新的,可以在命令行用 javap HelloController 看到里面是没有 login() 方法的

JFinal

2016-08-31 17:26

造成这个问题的原因,多数是 eclipse 的 Default output fold 没有改为项目的 WEB-INF/classes,从而 class 是被编译到了别的地方

JFinal

2016-08-31 17:27

注意,在使用 javap 的时候,区分一下非 WEB-INF/classes 之下的 HelloController 以及在别处的那个 HelloController

JFinal

2016-08-31 17:29

@tg 路由配置居然是: me.add("hello/login", HelloController.class),哪不用 javap 了,路由配置改为:me.add("hello", HelloController.class) 即可,认真看手册啊

tg

2016-08-31 17:32

@JFinal me.add("hello", HelloController.class)这样配置的话不是智能访问index方法吗,我看手册里不是controllerKey/method这样吗

JFinal

2016-08-31 17:36

你的路由配置是 me.add("hello/login", HelloController.class),那么 controllerKey 是 "hello/login",然后你访问的时候是 controllerKey + method,所以应该是 "hello/login/login" 才可以访问到 login 方法,如果不带 method 那么默认是访问 index 方法,也就是说 "hello/login" 是访问 index 方法

JFinal

2016-08-31 17:38

给一个记忆方法:
1:controllerKey 找到 Controller 类
2:controllerKey 后面的 methodName 找到 Controller 类中的 methodName()
3:当访问的 url 中省去 methodName 时,找到 Controller 类中的 index() 方法

tg

2016-08-31 17:39

@JFinal 解决了。谢谢

JFinal

2016-08-31 17:39

url 组成: controllerKey + methodName,这个 controllerKey 是指 me.add(controllerKey, ....) 配置的第一个参数

tg

2016-08-31 19:16

@JFinal 嗯,我其实看到url了,但是一直没有去想参数和url的区别

小星

2017-12-14 12:33

@tg 你怎么解决的,我还是遇到同样的问题!完全访问不到其他方法

热门反馈

扫码入社