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

JSF Java Discussion :

Message de warning incompréhensible


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Points : 71
    Points
    71
    Par défaut Message de warning incompréhensible
    Bonjour,

    J'ai une petite appli qui fonctionne très bien mais j'ai les messages de glassfish3 suivants quand je la runne.

    ATTENTION: Impossible de détecter le composant dont lID est login dans la vue.
    ATTENTION: JSF1063 : AVERTISSEMENT ! Définition d'une valeur d'attribut non-sérialisable dans HttpSession (clé : loginController, classe de la valeur : com.ucb.icsr.controller.LoginController).

    J'ai bien entendu pensé à sérialiser mon managed bean, mais est-ce recommandé, nécéssaire, ou pas...

    Je l'ai tout de même testé, le deuxième warning n'apparait plus mais bien le premier.

    Merci de vos éclaircissements.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    package com.ucb.icsr.controller;
     
    import com.ucb.icsr.dao.UserEJB;
    import com.ucb.icsr.entity.User;
    import javax.ejb.EJB;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    import javax.faces.component.UIComponent;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ComponentSystemEvent;
    import javax.faces.validator.ValidatorException;
     
    /**
     *
     * @author Jean-Benoît Kervyn de Meerendré
     * @version 1.0
     */
     
    @ManagedBean(name="loginController")
    @SessionScoped
    public class LoginController {
     
        @EJB
        private UserEJB userEJB;
     
        private User currentUser = new User();
        private boolean userLoggedIn = false;
     
        public String doLogin()
        {
            User us = userEJB.findUsersByUserNo(currentUser.getUserNo());
            if(!us.getPassword().equals(currentUser.getPassword()))
            {
                if(us.getActive()!=3)
                {
                    us.setActive(us.getActive()+1);
                    userEJB.updateUser(us);
                    setUserLoggedIn(false);
                }
                FacesContext context = FacesContext.getCurrentInstance();
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Login failed : " + (3 -us.getActive()) + " attempts remaining","login");
                context.addMessage("login", message);
                return "login.xhtml";
            }
            else
            {
                 us.setActive(0);
                 setUserLoggedIn(true);
                 userEJB.updateUser(us);
                 return "../main.xhtml";
            }
        }
        public String doLogout()
        {
            setCurrentUser(null);
            FacesContext context = FacesContext.getCurrentInstance();
            ExternalContext extContext = context.getExternalContext();
            extContext.invalidateSession();
            return "/admin/login/login.xhtml";
        }
     
        public void validateUser(FacesContext context, UIComponent component, Object user)throws ValidatorException
        {
            String userNo = user.toString();
            if(userEJB.findUsersByUserNo(userNo)==null)
                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "user", "The user does not exists"));
            if(userEJB.findUsersByUserNo(userNo).getActive()>2)
                throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "user", "This user account was locked"));
        }
     
        public void forwardToLoginIfNotLoggedIn(ComponentSystemEvent cse)
        {
            FacesContext context = FacesContext.getCurrentInstance();
            String viewId = context.getViewRoot().getViewId();
            if(!isUserLoggedIn() && ! viewId.startsWith("/login"))
                context.getApplication().getNavigationHandler().handleNavigation(context, null, "login");
        }
     
        public User getCurrentUser() {
            return currentUser;
        }
     
        public void setCurrentUser(User currentUser) {
            this.currentUser = currentUser;
        }
     
        public boolean isUserLoggedIn() {
            return userLoggedIn;
        }
     
        public void setUserLoggedIn(boolean userLoggedIn) {
            this.userLoggedIn = userLoggedIn;
        }
    }

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 102
    Points : 71
    Points
    71
    Par défaut
    En fait, ces deux messages apparaissent quand il n'y a pas de user loggué.
    Donc soit quand un user tape l'url de login, soit quand un user fait un logoff

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    SVP frère vous pouvez me donner le contenu des méthodes
    findUsersByUserNo();

    userEJB.updateUser();
    setUserLoggedIn();

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 65
    Points : 53
    Points
    53
    Par défaut
    instinctivement je dirais que dans ta vue tu dois avoir un composant dont l'id est "login" pour accueillir le résultat du traitement de la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        public void forwardToLoginIfNotLoggedIn(ComponentSystemEvent cse)
        {
            FacesContext context = FacesContext.getCurrentInstance();
            String viewId = context.getViewRoot().getViewId();
            if(!isUserLoggedIn() && ! viewId.startsWith("/login"))
                context.getApplication().getNavigationHandler().handleNavigation(context, null, "login");
        }
    Puisque cette fonction va chercher dans l'arborescence des objets de ta vue.

    Tu as aussi un ajout d'un message qui se préfixe login dans la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                FacesContext context = FacesContext.getCurrentInstance();
                FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Login failed : " + (3 -us.getActive()) + " attempts remaining","login");
                context.addMessage("login", message);
    Mais je crois que ça sert à ajouter dans ta liste de messages un message qui s'appelle "login" et qui contient "message"

    Quoi qu'il en soit, est-ce que le code suivant dans ta vue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <h:outputText id="login" value="" />
    Fait une différence ?

    C'est peut-être une autre balise dont tu as besoins.

    Autre question, est-ce que ça fait une erreur dans le cas ou le login échoue ?

Discussions similaires

  1. [requête regroupement] : message d'erreur incompréhensible
    Par camzo dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 25/04/2007, 21h34
  2. message de warning sur session_start
    Par steave dans le forum Langage
    Réponses: 12
    Dernier message: 29/03/2007, 10h26
  3. Message de warning OCI à l'ouverture de Toad ?
    Par elitost dans le forum Toad
    Réponses: 3
    Dernier message: 31/08/2006, 11h04
  4. Message: Security Warning
    Par ENIT-Info dans le forum Access
    Réponses: 7
    Dernier message: 31/01/2006, 21h16
  5. message d'erreur incompréhensible :s
    Par SanTa62 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/01/2006, 15h48

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