configRoute(ルートを指定)


このメソッドは、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 クラスには主に次の 2 つのメソッドがあります:


public Routes add(StringcontrollerKey 、クラス<? extends Controller>
controllerClass, String viewPath)


public Routes add(StringcontrollerKey, Class<? extends Controller>

controllerClass)


最初パラメータのcontrollerKeyは、コントローラにアクセスするために必要な文字列を指します。この文字列は、コントローラにのみ対応します。 2 番目のパラメーターcontrollerClass は、controllerKey に対応するコントローラーです。 3 番目のパラメータ viewPath は、コントローラによって返されるビューの相対パスを参照します (このパラメータの具体的な詳細については、コントローラの関連する章で説明します)。 viewPath が指定されていない場合のデフォルト値は、controllerKey です。

JFinal ルーティング ルールは次のとおりです:


QQ截图20170206095411.png

表からわかるように、JFinal は正確なアクションにアクセスするときに、controllerKey とメソッドを使用して正確に位置を特定する必要があります (アクションについてはセクション 3.2 を参照)定義)。メソッドを省略した場合、デフォルト値はインデックスです。 urlPara は URL でパラメータ値を運ぶためのものです。urlPara は 1 つのリクエストで同時に複数の値を運ぶことができます。JFinal はデフォルトでマイナス記号 "-" を使用して複数の値を区切ります (区切り文字は で設定できます)。 constants.setUrlParaSeparator(String))、Controller では、これらの値は getPara(intindex) を通じて個別に取得できます。 controllerKey、method、urlPara の 3 つの部分はスラッシュ「/」で区切る必要があります。 「/admin/article」のように、controllerKey 自体にスラッシュ「/」を含めることもできます。これは、基本的に struts2 の名前空間関数を実装します。


JFinal は、上記のルーティング ルールに加えて、ActionKey アノテーションも提供します。これは、元のルールを破る可能性があります。以下はコード例です。

public class UserController extends Controller {
@ActionKey("/login) ")
public void login()
{ render("login.html");
}


UserControllerのcontrollerKey値が「/user」であると仮定します。 @ActionKey("/login")アノテーションを使用した後、actionKeyは元の「/user/login」から「/login」に変更されます。このアノテーションにより、「/user/123-456」のように、マイナス記号や数字などの文字を actionKey で使用することもできます。


JFinal のデフォルトのルーティング ルールがニーズを満たせない場合、開発者は、必要に応じて Handler を使用して、よりパーソナライズされたルーティングをカスタマイズすることもできます。一般的な考え方は、Handler の最初のパラメータ String ターゲットの値を変更することです。

JFinal ルーティングは分割して構成することもできるため、大規模なチーム開発に特に役立ちます。コード例を次に示します。

public class FrontRoutes extends Routes {



public void config(){



add(" /", IndexController.class);

add("/blog", BlogController.class);



}



}

public class AdminRouteextends Routes{



public void config(){



add("/admin",AdminController.class);

add("/admin/user", UserController.class);



}



}

public class MyJFinalConf igextends JFinalConfig {



publicvoid configRoute(Routesme)

{ me.add(new FrontRoutes()) // フロントエンドルーティング

me.add(new AdminRoutes());ルーティングを終了します



}



public void configConstant(Constantsme) {}



public void configPlugin(Pluginsme) {}



public void configInterceptor(Interceptorsme) {}



public void configHandler (Handlersme) {}



}


上記の 3 つのコード部分に示されているように、FrontRoutes クラスはシステムのフロントエンド ルーティングを構成し、AdminRoutes はシステムのバックエンド ルーティングを構成し、 MyJFinalConfig.configRoute(...) メソッドは、2 つの分割されたルートをマージします。この分割構成を使用すると、MyJFinalConfig ファイルがより簡潔になるだけでなく、大規模なチーム開発が容易になり、複数の人が同時に MyJFinalConfig を変更するときのバージョンの競合が回避されます。