首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
关于jfinal三个注解controller,service,mode注解
都教授
2016-10-27 14:04
最近在研究jfinal,看了《jfinal极速开发实战》这本书,jfinal这个框架真的很简洁,强大。但是关于这里的注解感觉好复杂,有点不懂,求大神解惑
项目:
JFinal
1
1
评论区
JFinal
2016-10-27 14:55
jfinal 中使用的注解很少,核心注解只有 @Before、@Clear、@ActionKey 这三个,具体的用法在手册上有明确说明,建议下载首页的 jfinal 手册看一下,少走很多弯路
回复
都教授
2016-10-27 15:19
@JFinal
那我现在搭建一个项目,service层,controller层,这些并不是一定需要注解来声明的?
回复
zempty
2016-10-27 15:31
@都教授
把那些丢了。jfinal的配置全在config类里。
回复
都教授
2016-10-27 15:59
@zempty
可能是之前一直用ssh框架的原因,每个层之间习惯的使用注解,不用总觉得不对,这里controller的注解只是路由可以在config里面设置,但是这里service层一定需要注解吗?
回复
zempty
2016-10-28 11:12
@都教授
不知道service层是怎么分的。就是你配好了controller,然后就可以通过http://localhost/project/controllerkey/method,访问你写的方法了。是这样的啊。我觉得ssh的分层太恶心了,受不了受不了。有些人不管有没必要都乱分,一个屁大的系统都分一堆interface,然后impl,我受不了。我都想用jfinal重写,但是想想算了,我何必呢?又不是我的项目!
回复
cctvsod
2016-11-20 23:38
@zempty
说道我心坎了,看到所有的dao、service都加个impl就够够的
回复
yuner
2018-07-13 11:20
@JFinal
@clear很鸡肋?
@Before(AAA.class)
public class UserController extends Controller {
@Clear
@Before(BBB.class)
public void login() {
// Global、Class级别的拦截器将被清除,但本方法上声明的BBB不受影响
}
这个方法中AAA.class 好像本来就没什么用啊
也就是说没有method级别@before的时候 cleal才有其用武之地?
@Clear({AAA.class, CCC.class})// 清除指定的拦截器AAA与CCC
@Before(CCC.class)
public void show() {
// 虽然Clear注解中指定清除CCC,但她无法被清除,因为清除操作只针对于本层以上的各层
}
这个方法也一样 本身就清楚不掉CCC.class 即使加了clear(ccc.class)还是没作用啊 clear始终是清楚不掉method级别的拦截器的?
}
求解惑
回复
JFinal
2018-07-13 14:28
@yuner
Method 级别的拦截器直接删掉就可以,没必要用
@Clear
回复
yuner
2018-07-13 15:12
@JFinal
看来我是钻牛角尖了 试了两个小时都觉得clear是真的不能清除method级别的拦截器。。。。。。。。。
回复
JFinal
2018-07-13 16:03
@yuner
Clear 本来就无法删除 method 级别的拦截器,本身就是这么设计的。 你并没有钻牛角尖,可能是看错了这个功能点
回复
yuner
2018-09-14 09:16
@JFinal
conroller方法加了参数之后 路由里面的 method方法就变成 urlpara了 method路由就一直是index 去掉参数就正常了 为什么啊
回复
JFinal
2018-09-14 09:59
这个就是 jfinal 的路由规则而已,建议再仔细看一下路由部分的文档:
http://www.jfinal.com/doc/2-3
jfinal 的路由已经是极度简洁的设计了,只有四条规则,分分钟掌握
此外,如果对于有些 action ,你不希望使用 urlPara,或者对 urlPara 有数量控制,可以用一下下面的方法:
public void index() {
checkUrlPara(0);
.....;
}
上面的代码是不使用 urlPara,下面给出使用 3 个 urlPara 的代码:
public void index() {
checkUrlPara(3);
.....;
}
你还可以使用拦截器来统一控制:
@Before(NoUrlPara.class)
public void action() {
....
}
如果将 NoUrlPara 拦截器配置为全局的,那么所有 action 都不能有 urlPara 了,这样就可以省很多代码:
me.add(new NoUrlPara());
在上面这个配置下,如果有个别 action 你又希望使用 urlPara 的话,用
@Clear
移除它就好:
@Clear(NoUrlPara.class)
public void action() {
...
}
回复
发送
我要反馈
热门反馈
扫码入社