configRoute (me conduit)


Cette méthode est utilisée pour configurer le routage d'accès JFinal. Le code suivant configure le mappage de "/hello" au contrôleur HelloController Grâce à la configuration suivante, http://localhost/hello accédera à la méthode HelloController.index(), et http ://localhost/hello/methodName accédera à la méthode HelloController.methodName().

public void configRoute(Routes me)
{ me.add("/hello",
HelloController.class);

La classe Routes a principalement les deux méthodes suivantes :


public Routes add(String controllerKey , Class<? étend Controller>
controllerClass, String viewPath)


public Routes add (String controllerKey, Class<? extend Controller>

controllerClass)


premier Le Le paramètre controllerKey fait référence à une chaîne requise pour accéder à un Controller. Cette chaîne correspond uniquement à un Controller. La ControllerKey ne peut localiser que le Controller. Le deuxième paramètre controllerClass est le Controller correspondant au contrôleurKey. Le troisième paramètre viewPath fait référence au chemin relatif de la vue renvoyé par le Controller (des détails spécifiques de ce paramètre seront donnés dans les chapitres concernés du Controller). La valeur par défaut est controllerKey lorsque viewPath n'est pas spécifié.

Les règles de routage JFinal sont les suivantes :


QQ截图20170206095411.png

Comme le montre le tableau, JFinal doit utiliser la clé de contrôleur et la méthode pour localiser avec précision lors de l'accès à une action exacte (voir la section 3.2 pour l'action définition). Lorsque la méthode est omise, la valeur par défaut est index. urlPara doit transporter les valeurs des paramètres dans l'URL. urlPara peut transporter plusieurs valeurs dans une requête en même temps. JFinal utilise le signe moins "-" pour séparer plusieurs valeurs par défaut (le séparateur peut être défini via). constants.setUrlParaSeparator(String)), Dans Controller, ces valeurs peuvent être récupérées séparément via getPara(intindex). Les trois parties de controllerKey, méthode et urlPara doivent être séparées par des barres obliques "/". Notez que le contrôleurKey lui-même peut également contenir une barre oblique "/", telle que "/admin/article", qui implémente essentiellement la fonction d'espace de noms de struts2.


JFinal fournit également des annotations ActionKey en plus des règles de routage ci-dessus, qui peuvent enfreindre les règles d'origine :

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


Supposons que la valeur controllerKey de UserController soit "/user". Après avoir utilisé l'annotation @ActionKey("/login"), l'actionKey passe de "/user/login" d'origine à "/login". Cette annotation peut également permettre d'utiliser des caractères tels que des signes moins ou des chiffres dans actionKey, tels que "/user/123-456".


Si les règles de routage par défaut de JFinal ne peuvent pas répondre aux besoins, les développeurs peuvent également utiliser Handler pour personnaliser un routage plus personnalisé selon les besoins. L'idée générale est de modifier la valeur du premier paramètre String target dans Handler.

Le routage JFinal peut également être divisé et configuré, ce qui est particulièrement utile pour le développement d'équipes à grande échelle. Voici un exemple de code :

public class FrontRoutes extends Routes {



public void config(){


.
add(" /", IndexController.class);

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



}



}

public class AdminRoutesextends 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()); // Routage frontal

me.add(new AdminRoutes()); mettre fin au routage

gestionnaire de configuration public void (Handlersme) {}



}







Comme le montrent les trois morceaux de code ci-dessus, la classe FrontRoutes configure le routage frontal du système, AdminRoutes configure le routage back-end du système et le La méthode MyJFinalConfig.configRoute(...) fusionne les deux routes divisées. L'utilisation de cette configuration fractionnée rend non seulement le fichier MyJFinalConfig plus concis, mais facilite également le développement en équipe à grande échelle et évite les conflits de versions lorsque plusieurs personnes modifient MyJFinalConfig en même temps.