IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Session utilisateur par identifiant


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Etudiante
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut Session utilisateur par identifiant
    Bonjour,

    J'ai 3 utilisateurs qui peuvent créer les demandes.

    Chaque utilisateur connecté peut accéder seulement à la liste de ses demandes créés.

    Dans la classe UserController (dans la méthode connecter) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            FacesContext context = FacesContext.getCurrentInstance();
            context.getExternalContext().getSessionMap().put("user", mat);
    dans la classe DemandeFacade (méthode qui retourne la liste des demandes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public List<Demande> getDmd(){
            Query q = em.createQuery("SELECT mat FROM demande INNER JOIN user ON demande.mat = user.mat");
            return q.getResultList();
        }
    dans la classe DemandeController (méthode d'affichage de la liste des demandes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public String prepareList() {
            FacesContext fc = FacesContext.getCurrentInstance();
            String user= fc.getExternalContext().getSessionMap().get("user").toString();
            items=new ListDataModel(demandeFacade.getDmd());
            return "List";
        }
    Le Problème: quand un utilisateur se connecte, il peut voir la liste de toutes les demandes.

    Quelqu'un saurait-il me dire au niveau de quelle classe se trouve l'erreur ?

    Application web JPA/EJB/JSF

    Merci d'avance pour votre aide.

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Bonjour,

    La syntaxe de la chaîne JPQL me semble un peu bizarre et vous n'avez pas de clause WHERE. Essayez quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public List<Demande> getUserDmd(Integer id) {
            Query q = em.createQuery("SELECT d FROM Demande d JOIN d.iduser u WHERE u.iduser = '" + id + "'");
            return (List<Demande>) q.getResultList();
        }
    J'ignore ce que la variable "mat" signifie alors je ne l'ai pas incluse dans l'exemple. Pour "d.iduser u": c'est un objet de type User.

  3. #3
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Etudiante
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut Requete JPQL dans la classe DemandeFacade
    Bonjour,

    D'abord merci pour votre réponse.

    J'ai essayé votre solution, mais le même problème

  4. #4
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Re-bonjour,

    Essayez d'ajouter dans DemandeController une méthode de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public List findUsersDemandes() {
            recreateModel();
            items = (List<Demande>) this.userController.getSelected().getDemandeCollection();
            return items;
        }
    Ce serait peut-être utile d'annoter la méthode avec @PostConstruct, ainsi DataModel serait initialisé au plus vite possible.

    [EDIT]
    Ou sinon, mettre sur la page xhtml:
    <h:dataTable value="#{commandeController.findUsersDemandes()}var="item" ...>
    [/EDIT]

    Désolée, ça fait longtemps que je n'utilise plus l'implémentation de base JSF...

  5. #5
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Etudiante
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut
    J'ai testé la requête sous MySQL, elle fonctionne bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public List<Demande> getDmd(Integer mat){
            Query q = em.createQuery("SELECT demande.* FROM Demande, User where User.mat=Demande.mat and User.mat = :mat");
            q.setParameter("mat", mat);
            return q.getResultList();
        }
    Mais il me donne une exception javax.ejb.EJBException.

    Possible que l'erreur existe dans cette méthode (demandeController)?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public String prepareList() {
            FacesContext fc = FacesContext.getCurrentInstance();
            String user= fc.getExternalContext().getSessionMap().get("user").toString();
            items=new ListDataModel(demandeFacade.getDmd(Integer.valueOf(user)));
            return "List";
        }
    Merci infiniment!

  6. #6
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Citation Envoyé par ayasaidi Voir le message
    Mais il me donne une exception javax.ejb.EJBException.
    Pourriez-vous montrer le log concernant l'erreur ?

  7. #7
    Membre averti
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Etudiante
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 43
    Par défaut
    Finalement j'ai utilisé cette requête en modifiant simplement '" + id + " par :id
    Citation Envoyé par Mishulyna Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public List<Demande> getUserDmd(Integer id) {
            Query q = em.createQuery("SELECT d FROM Demande d JOIN d.iduser u WHERE u.iduser = '" + id + "'");
            return (List<Demande>) q.getResultList();
        }
    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tomcat 6 - Un fichier de log par session utilisateur ?
    Par onlytoine dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 14/01/2011, 15h26
  2. Réponses: 6
    Dernier message: 08/10/2010, 18h40
  3. un utilisateur par session
    Par chh2008 dans le forum Administration
    Réponses: 2
    Dernier message: 15/11/2009, 09h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo