Comment donner un menu selon l utilisateur connecté

nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013 - 12 avril 2012 à 16:58
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013 - 14 avril 2012 à 13:39
Bonjour tout le monde,
Je ne sais trop si je postule dans le bon forum mais bon,
bon voila j'ai un ensemble de type d’utilisateurs dans mon application, chaque utilisateur a son propre menu que j'inclus dans une Template, je vous présente la logique que j'ai suivie si vous avez une meilleur propositions ou vous détectez ou est l’erreur.
je donne a l utilisateur de saisir son login, mot de passe et bouton d option pour choisir son type
UtilisateurBean: ici l utilisateur est connécté et je récupere son type:

} else if (authentifi != null) {
HttpSession session = (HttpSession) FacesContext
.getCurrentInstance().getExternalContext().getSession(true);
            if (typeRole.equals("Administrateur")) {
                cleanForm();
                menu="menuAdministrateur.html";
                return "listItem.xhtml";
            } else if (typeRole.equals("Administrateur Audit")) {
                cleanForm();
                menu="menuAdministrateurAudit.html";
                return "Administrateur_Audit.xhtml";
            } else if (typeRole.equals("Planificateur")) {
                cleanForm();
                menu="menuPlanificateur.html";
                return "listDivision.xhtml";
            } else {
                cleanForm();
                menu="menuAuditeur.html";
                return "listDivision.xhtml";
            }
 
        }

dans ma Template je fait


         
 


pour le résultat rien ne s'affiche pas d’erreurs et la page reste la même.
merci d avance

13 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 avril 2012 à 08:55
Bonjour,

Tu as bien créé le getter sur menu ?

Où se trouve le code java que tu écris ? Dans un constructeur sans attribut ?
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 08:58
Je précise que si je met le nom du fichier à inclure en clair ça s'affiche sans probleme


         
 
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 avril 2012 à 09:18
Oui mais tu n'as pas répondu à mes questions...
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 09:22
oui j'ai bien crée les getter et setter du menu, mon code java se trouve au fait dans une méthode connection_role() dans mon bean UtilisateurBean :

public String connection_role() {
        Utilisateur authentifi = resp.seConnecter_role(login, password, typeRole);
        System.out.print("on a un objet user");
        FacesMessage msg;
        FacesContext myFacesContext;

        if ("_".equals(authentifi.getLogin())) {
            System.out.print("utilisateur nexiste po dans");
            msg = new FacesMessage("Compte incorrect", "Login password incorrect");
            msg.setSeverity(FacesMessage.SEVERITY_INFO);

            myFacesContext = FacesContext.getCurrentInstance();
            myFacesContext.addMessage(null, msg);
            System.out.println("login ou pwd erronéeeeeee");
            return null;
        } else if (authentifi != null) {
HttpSession session = (HttpSession) FacesContext
.getCurrentInstance().getExternalContext().getSession(true);
            if (typeRole.equals("Administrateur")) {
                cleanForm();
                menu="menuAdministrateur.html";
                return "listItem.xhtml";
            } else if (typeRole.equals("Administrateur Audit")) {
                cleanForm();
                menu="menuAdministrateurAudit.html";
                return "Administrateur_Audit";
            } else if (typeRole.equals("Planificateur")) {
                cleanForm();
                menu="menuPlanificateur.html";
                return "listDivision.xhtml";
            } else {
                cleanForm();
                menu="menuAuditeur.html";
                return "listDivision.xhtml";
            }

        }

        return null;
    }
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 avril 2012 à 10:24
Tu appelles cette méthode à quel endroit ? Dans ton constructeur vide ?

Vu comme elle est constituée, je dirais que tu fais une redirection sur la même page => reconstruction du bean et perd les infos présentes dans ta classe.

Pour que ca marche, il faut que tu places ce code dans ton constructeur sans paramètre.
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 10:57
Je l'appel dans une page login.xhtml comme ça:

0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 11:04
Je n'ai pas bien compris pourquoi je mettrais le code dans le constructeur par défaut, surtout que si je fait cela et par exemple je voudrais appeler le beanUtilisateur pour un autre traitement je ferais appel en même temps a la connexion, ce n'est pas?
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 avril 2012 à 11:06
Ok, je n'avais pas compris comment tu l'utilisais. la variable menu est enregistrée dans la session ou passe de page en page ? (je te conseil la session)

Tu ne l'enregistres pas côté serveur hein ?
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 11:09
normalement je devrait le faire par session mais je ne suis pas encore arrivé a ce stade dans mon application et donc pour le moment je fait passer de page en page
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
13 avril 2012 à 11:32
Si c'est avec un scope session, ca peut marcher, si c'est avec un autre mécanisme, je pense que là quand le include est appelé, la valeur n'est pas encore récupérée.

Ce n'est pas très compliqué de passez des paramètres dans la session, tu peux le faire rapidement, surtout en jsf.

J'ai un peu oublié l'ordre dans lequel étaient exécutées les étapes lors de l'appel d'une jsp mais je pense que le problème vient de là. Tu peux modifier cet ordre mais, si ce n'est que pour une solution temporaire, ca ne vaut pas le coup
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 13:12
D'accord, le temps que je revienne sur mon projet, mais je me demandais est ce que la logique que j'essaie de faire est bien juste, avec les session en théorie ça devra marcher? nn?
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
13 avril 2012 à 13:36
de retour avec les session mais rien n'a changé

            Utilisateur user = resp.findById(idutilisateur);
            HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
            if (typeRole.equals("Administrateur")) {
                cleanForm();
                setMenu("menuAdministrateur.html");
                session.setAttribute("user", user);
                return "listItem.xhtml";//test avec page directement
            } else if (typeRole.equals("Administrateur Audit")) {
                cleanForm();
                setMenu("menuAdministrateurAudit.html");
                session.setAttribute("user", user);
                return "Administrateur_Audit";
            } else if (typeRole.equals("Planificateur")) {
                cleanForm();
                setMenu("menuPlanificateur.html");
                session.setAttribute("user", user);
                return "Planificateur"; //test avec regle de navigation
            } else {
                cleanForm();
                setMenu("menuAuditeur.html");
                session.setAttribute("user", user);
                return "Auditeur";
            }
0
nooraty Messages postés 17 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 7 janvier 2013
14 avril 2012 à 13:39
alors je vien de remplacer /code
et maintenant j'i des menus différents selon la personne connécté :). reste un petit soucis, le contenu des pages a disparu :s. Je sais pas trop si c'est a cause du include ne devrais je pas l’utiliser la bas peut être??
excusez mes questions de débutants
0
Rejoignez-nous