#2.3 configRoute(Routes me)
此方法用来配置JFinal访问路由,如下代码配置了将”/hello”映射到HelloController这个控制器, 通过以下的配置,http://localhost/hello将访问HelloController.index()方法, 而http://localhost/hello/methodName将访问到HelloController.methodName()方法。
public void configRoute(Routes me) {
me.add("/hello", HelloController.class);
}
Routes 类主要有如下两个方法:
public Routes add(String controllerKey, Class<? extends Controller> controllerClass, String viewPath)
public Routes add(String controllerKey, Class<? extends Controller> controllerClass)
第一个参数controllerKey是指访问某个Controller所需要的一个字符串,该字符串唯一对应一个Controller,controllerKey仅能定位到Controller。 第二个参数controllerClass是该controllerKey所对应到的Controller。 第三个参数viewPath是指该Controller返回的视图的相对路径(该参数具体细节将在Controller相关章节中给出)。 当viewPath未指定时默认值为controllerKey。
JFinal路由规则如下表:
- url 组成 | 访问目标
- controllerKey | YourController.index()
- controllerKey/method | YourController.method()
- controllerKey/method/v0_v1 | YourController.method(),所带url参数值为:v0_v1
- controllerKey/v0_v1 | YourController.index(),所带url参数值为:v0_v1
从表中可以看出,JFinal访问一个确切的Action(Action定义见3.2节)需要使用controllerKey与method来精确定位,当method省略时默认值为index。 urlPara是为了能在url中携带参数值,urlPara可以在一次请求中同时携带多个值,JFinal默认使用减号“-”来分隔多个值(可通过constants. setUrlParaSeparator(String)设置分隔符), 在Controller中可以通过getPara(int index)分别取出这些值。controllerKey、method、urlPara这三部分必须使用正斜杠“/”分隔。 注意,controllerKey自身也可以包含正斜杠“/”,如“/admin/article”,这样实质上实现了struts2的namespace功能。