Skip to content

Latest commit

 

History

History
39 lines (28 loc) · 2.26 KB

2.3.md

File metadata and controls

39 lines (28 loc) · 2.26 KB

#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功能。

links