Redirection depuis l’accueil selon le type utilisateur

Notre application ayant des interfaces et donc des fonctionnalités différentes selon le type de l’utilisateur (etudiant ou enseignant) nous allons créer une page d’accueil qui lancera automatiquement la méthode d’un bean (par exemple la méthode accueil du bean sessionController) redirigeant vers la bonne page d’accueil ( une pour chaque type d’utilisateur) selon le type de l’utilisateur.

Il y a deux méthodes possibles suivant si on utilise ou pas les possibilités offertes par le composant JSF onload.

Voici la première, sans utiliser le composant onload :

Tout d’abord, on ajoute la méthode accueil() au bean sessionController. Cette méthode teste le type de l’utilisateur, puis revoit « pageAccueilType1 » ou « pageAccueilType2 » :

public String accueil() {

type=recupérationTypeUtilisateur();

si (type==type1){

return « pageAccueilType1 »;

}else{

si(type==type2){

return « pageAccueilType2 »;

}else{

return « error »;

} } }

Ensuite, après avoir créer les différentes pages d’accueil, il faut ajoute les liens de navigation dans le fichier de configuration jsf (dans notre cas navigation-rules.xml):

<navigation-case>
<from-outcome>pageAccueilType1</from-outcome>
<to-view-id>/stylesheets/type1/index.xhtml</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>pageAccueilType2</from-outcome>
<to-view-id>/stylesheets/type2/index.xhtml</to-view-id>
</navigation-case>

Il ne reste plus qu’à modifier votre page d’accueil d’origine (param default-view dans le web.xml) pour y mettre le code suivant:

<h:form id= »formAccueil »>
<h:commandLink type= »submit » id= »idtest » action= »#{sessionController.accueil} »>
<h:outputText value= »mon_texte »/>
</h:commandLink>
</h:form>

<script type= »text/javascript »>

var myLink = document.getElementById(‘formAccueil:idtest’);
myLink.onclick();

</script>

ainsi, dès de chargement de la page d’accueil basique on lancera la méthode accueil() qui redirigera vers le bon index.xhtml

Voici la deuxième méthode (à préférer à la précédente) en utilisant le composant onload:

Il faut effectuer les mêmes étapes que précédamment excepté la dernière. Au lieu d’ajouter du code javascript pour lancer la méthode de notre bean nous allons utiliser les propriétés du composant onload (index.xhtml sera donc vide). Il suffit alors de rajouter dans le onload.xml:

<navigation-rule>
<view-id>/stylesheets/index.faces</view-id>
<action>#{sessionController.accueil}</action>
</navigation-rule>

Ainsi avant chaque accès à la page index.xhtml, on passe par la méthode accueil du bean sessionController, qui (comme elle ne renvoit jamais « null ») renvoit vers une autre page (voir le descriptif de la méthode ci-dessus). A noter qu’au lieu de retourner vers la page d’erreur en cas de non-identification de l’utilisateur, il est peut-être préférable de le rediriger vers une page de login l’invitant à s’identifier (ou une page d’erreur ayant un lien vers la page de login).

Laisser un commentaire