configRoute(給我路由)
此方法用來配置JFinal 存取路由,如下程式碼配置了將」/hello」對應到HelloController 這個控制器, 透過以下的配置, http://localhost/hello 將存取HelloController.index()方法,而http://localhost/hello/methodName 將存取到HelloController.methodName()方法。
{ 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 路由規則如下表:
#從表中可以看出,JFinal 存取一個確切的Action(Action 定義見3.2 節)需要使用controllerKey與method 來精確定位,當method 省略時預設值為index。 urlPara 是為了能在url 中攜帶參數值,urlPara 可以在一次請求中同時攜帶多個值,JFinal 預設使用減號「-」來分隔多個值(可透過constants. setUrlParaSeparator(String)設定分隔符號),在Controller 中可以透過getPara(intindex)分別取出這些值。 controllerKey、method、urlPara 這三個部分必須使用正斜線「/」分隔。 注意,controllerKey 本身也可以包含正斜線“/”,如“/admin/article”,這樣實質上實現了struts2 的 namespace 功能。
JFinal 在上述路由規則之外還提供了ActionKey 註解,可以打破原有規則,以下是程式碼範例:
@ActionKey("/login")
public void login()
#{ render("login.html");
#}
假定UserController 的controllerKey 值為“/user”,在使用了@ActionKey(“/login”)註解以後,actionKey 由原來的“/user/login”變為了“ /login」。此註解還可以讓 actionKey 中使用減號或 數字等字符,如“/user/123-456”。
JFinal 路由也可以進行分割配置,這對大尺度團隊開發特別有用,以下是程式碼範例:
#public void config(){
add("/",IndexController.class);
add("/blog", BlogController.class);
}
}