文档章节

JFinal 的Controller自动注册工具AutoControllerRegist

绝望的八皮
 绝望的八皮
发布于 2012/07/20 14:12
字数 258
阅读 1063
收藏 4

首先上如何使用的代码

public void configRoute(Routes me) {

		AutoControllerRegist.regist(me);

		//me.add("/mobileBind", MobileBindController.class);

	}

如果不用AutoControllerRegist我们需要打开那行注释.

AutoControllerRegist的注册规则探测到所有继承了Controller的类,然后查找类上是否有ControllerBind注解,有注解按照注解配置的值进行注册.如果没有则检测类名是否用Controller作为结尾,如果不是则跑出异常,是则截取类名中Controller前面的部分并且首字母小写作为controllerkey。

 


 

 

package com.jfinal.ext.route;

import java.util.List;

import com.jfinal.config.Routes;
import com.jfinal.core.Controller;
import com.jfinal.plugin.tablebind.ClassSearcher;
import com.jfinal.util.StringKit;

public class AutoControllerRegist {

	@SuppressWarnings("rawtypes")
	public static void regist(Routes routes) {
		List<Class> classList = ClassSearcher.findClasses(Controller.class);
		ControllerBind controllerBind = null;
		for (Class clazz : classList) {
			controllerBind = (ControllerBind) clazz.getAnnotation(ControllerBind.class);
			if (controllerBind == null) {
				routes.add(controllerKey(clazz), clazz);
			} else {
				routes.add(controllerBind.controllerKey(), clazz, controllerBind.viewPath());
			}
		}
	}

	private static String controllerKey(Class clazz) {
		if (!clazz.getSimpleName().endsWith("Controller")) {
			throw new RuntimeException(clazz + " don,t has a ControllerBind annotation and it,s don,t end Controller! ");
		}
		String controllerKey = "/" + StringKit.firstCharToLowerCase(clazz.getSimpleName());
		controllerKey = controllerKey.substring(0, controllerKey.indexOf("Controller"));
		return controllerKey;
	}
}

package com.jfinal.ext.route;

public @interface  ControllerBind {
	public String controllerKey() ;
	public String viewPath() default"";
} 

ClassSearcher类见另一篇自动注册Model的博客 http://my.oschina.net/b1412/blog/68083

© 著作权归作者所有

共有 人打赏支持
绝望的八皮

绝望的八皮

粉丝 392
博文 22
码字总数 10505
作品 2
其它
CTO(技术副总裁)
私信 提问
加载中

评论(4)

五娃
五娃

引用来自“绝望的八皮”的评论

引用来自“1099am”的评论

没有这个类

这个是很久以前的了。。目前升级为AutoBindRoutes. me.add(new AutoBindRoutes())

看了源码弄出来了,谢谢
绝望的八皮
绝望的八皮

引用来自“1099am”的评论

没有这个类

这个是很久以前的了。。目前升级为AutoBindRoutes. me.add(new AutoBindRoutes())
五娃
五娃
没有这个类
五娃
五娃
请问楼主,这个AutoControllerRegist类是不是要自己写啊?我下的jfinal-ext包里面没有这个包啊
JFinal Extensions 1.3 发布,JFinal 扩展

Jfinal-ext是对java极速web框架 jfinal 的一个扩充,主要利用jfinal微内核高扩展的特性扩展常用的实用功能和集成各种第三方框架,简化开发者的学习应用成本,为您节约更多时间,去陪恋人、家...

绝望的八皮
2013/01/04
1K
14
JFinal Extensions 1.1 发布,JFinal 扩展

Jfinal-ext是对java极速web框架 jfinal 的一个扩充,主要利用jfinal的plugin机制集成各种第三方框架,像spring一样,简化开发者的学习应用成本,使用时请将jfinal.jar先引入工程。 changelo...

绝望的八皮
2012/10/26
681
12
JFinal Extensions 1.0 发布,JFinal 扩展

Jfinal-ext是对java极速web框架 jfinal 的一个扩充,主要利用jfinal的plugin机制集成各种第三方框架,像spring一样,简化开发者的学习应用成本,使用时请将jfinal.jar先引入工程。 Jfinal-e...

绝望的八皮
2012/10/14
1K
13
jfinal类加载问题

@JFinal 你好,想跟你请教个问题:詹总好,我正在写一个代码生成器,生成的controller和model想自动注册到jfinal里,不需重启中间件,有没有好的办法呢?

首席救火队员
2016/12/23
197
1
JFinal 3.5 发布,将能上的菜先上了

jfinal 新功能经过 6 个月的酝酿、开发,在大幅度的创新来临之前,jfinal 3.5 这一版先稳一稳,趁着国庆长假,将能上的菜先上了。 jfinal 3.5 这一版针对这 6 个月以来用户反馈最强烈、最频繁...

JFinal
2018/10/08
10.8K
134

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq安装教程

RabbitMQ有Windows与Linux版本的,这里先写Windows版本的安装。 以前安装软件总是在百度上找某某安装教程,结果能按照教程安装好的软件真的不多。想起先前以为大牛说的一句话,去官网按照官网...

em_aaron
今天
6
0
Android 贝塞尔曲线实践——波浪式运动

一、波浪效果如下 贝塞尔曲线自定义波浪效果的案例很多,同样方法也很简单,大多数和本案例一样使用二次贝塞尔曲线实现,同样还有一种是PathMeasure的方式,这里我们后续补充,先来看贝塞尔曲...

IamOkay
今天
3
0
Nmap之防火墙/IDS逃逸

选项 解释 -f 报文分段 --mtu 指定偏移大小 -D IP欺骗 -sI 原地址欺骗 --source-port 源端口欺骗 --data-length 指定发包长度 --randomize-hosts 目标主机随机排序 --spoof-mac Mac地址欺骗 ...

Frost729
今天
2
0
带你搭一个SpringBoot+SpringData JPA的环境

不知道大家对SpringBoot和Spring Data JPA了解多少,如果你已经学过Spring和Hibernate的话,那么SpringBoot和SpringData JPA可以分分钟上手的。 其实我在学完SpringBoot和SpringData JPA了之...

java菜分享
今天
7
0
Chocolatey 在Window搭建一个开发环境

在看了(利用 Chocolatey 快速在 Windows 下搭建一个开发环境)后,准备从零开始 一、准备工作 1、用管理员权限启动:powershell,执行错误请参考(PowerShell因为在此系统中禁止执行脚本的解...

近在咫尺远在天涯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部