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 :

[PrimeFaces] L'action du bouton du formulaire ne s'enclenche pas


Sujet :

JSF Java

  1. #1
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut [PrimeFaces] L'action du bouton du formulaire ne s'enclenche pas
    Bonjour,

    J'ai fait un formulaire de login mais l'action associée à mon bouton de connexion ne s'enclenche pas.
    Qqun saurait-il m'aider ?

    Voici le code :
    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
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    	xmlns:h="http://java.sun.com/jsf/html"
    	xmlns:p="http://primefaces.org/ui"
    	xmlns:f="http://java.sun.com/jsf/core"
    	xmlns:ui="http://java.sun.com/jsf/facelets">
    <f:view locale="#{changeLocale.locale}">
    	<h:head>
    		<title>Connexion</title>
    		<h:outputStylesheet library="css" name="styles.css" />
    	</h:head>
    	<body>
    		<h:form id="connexionForm">
    			<p:growl id="growl" life="2000" />
    				<p:panelGrid columns="1" style="margin-bottom:15px;" layout="grid">
    					<f:facet name="header">
    						<h:outputText class="titreLogin" value="Connexion" />
    					</f:facet>
    					<p:panelGrid columns="2" styleClass="panelSansBordure">
    						<h:outputText value="Nom d'utilisateur :" />
    					</p:panelGrid>
    					<p:inputText id="login" value="#{connexionForm.login}" size="25" />
     
    					<p:panelGrid columns="2" styleClass="panelSansBordure">
    						<h:outputText value="Mot de passe :" />
    					</p:panelGrid>
    					<p:password id="password" value="#{connexionForm.password}" size="25" />
     
    					<p:panelGrid columns="2" style="margin-bottom:15px"
    						styleClass="panelSansBordure">
    						<p:selectBooleanCheckbox value="#{connexionForm.isRemembered}" />
    						<h:outputText value="Se souvenir de moi" />
    					</p:panelGrid>
    					<p:commandButton value="Connexion" id="doLogin" update="growl"
    						action="connexionForm.authenticate"
    						styleClass="ui-icon-login" />
    				</p:panelGrid>
     
    			<p:commandLink id="forgetLogin" update="growl"
    				actionListener="#{connexionForm.forgetLoginData}">
    				<h:outputText class="lien" value="Login ou mot de passe oublié" />
    			</p:commandLink>
    		</h:form>
    	</body>
    </f:view>
    </html>
    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
    package ch.rwb.application.forms.login;
     
    import java.io.IOException;
     
    import javax.annotation.PostConstruct;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.servlet.RequestDispatcher;
     
    @ManagedBean
    @RequestScoped
    public class ConnexionForm {
     
    	private String login;
    	private String password;
    	private boolean isRemembered;
    	private String originalURL;
     
    	/**
             * Default Constructor
             */
    	public ConnexionForm() {
     
    	}
     
    	@PostConstruct
    	public void init() {
    		ExternalContext externalContext = FacesContext.getCurrentInstance()
    				.getExternalContext();
    		originalURL = (String) externalContext.getRequestMap().get(
    				RequestDispatcher.FORWARD_REQUEST_URI);
     
    		if (originalURL == null) {
    			originalURL = externalContext.getRequestContextPath()
    					+ "/Accueil.xhtml";
    		} else {
    			String originalQuery = (String) externalContext.getRequestMap()
    					.get(RequestDispatcher.FORWARD_QUERY_STRING);
     
    			if (originalQuery != null) {
    				originalURL += "?" + originalQuery;
    			}
    		}
    	}
     
     
    	public String getLogin() {
    		return login;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public boolean getIsRemembered() {
    		return isRemembered;
    	}
     
    	public void authenticate() throws IOException {
    		FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext externalContext = context.getExternalContext();
     
    		try {
    			 System.out.println("Username" + login);
     
    			 if("test".equals(login) && "passwd".equals(password)){
    				 externalContext.getSessionMap().put("user", "john");
    			     externalContext.redirect(originalURL);
    		     } 
     
    			 throw new Exception("Invalid user/password");
    		} catch (Exception e) {
    	        context.addMessage(null, new FacesMessage("Unknown login"));
    	    }
     
    	}
    }
    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ooooooouuuh, elle est moche celle-là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p:commandButton value="Connexion" id="doLogin" update="growl"
                            action="#{connexionForm.authenticate}"
                            styleClass="ui-icon-login" />
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut


    J'ai essayé toute sorte de chose, à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    actionListener="#{connexionForm.authenticate}"
    (qui est le code du showcase PF)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action="#{connexionForm.authenticate()}"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action="#{connexionForm.authenticate}"
    Mais aucune ne fonctionne

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    J'utiliserais celle-là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    action="#{connexionForm.authenticate()}"
    Si tu mets un point d'arrêt dans la méthode, il n'y passe pas ?
    S'il n'y passe pas, peux-tu essayer en ajoutant un immediate="true" sur le commandButton et me dire s'il y passe ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    ça marche, mais uniquement si je mets immediate="true".
    Pourquoi faut-il mettre cela ?

    Merci pour ton aide

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est que tu dois avoir un problème quelque part dans le cycle JSF soit dans l'étape 2 (Apply Request Values), soit dans l'étape 3 (Process Validations), soit dans la 4 (Update Model Values)... difficile de dire comme ça, il faudrait mettre un phase-listener pour déterminer le problème.
    Je me suis fait une classe pour ça, voici son code
    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
     
    package ton.package;
     
    import java.util.Map;
    import javax.faces.event.PhaseEvent;
    import javax.faces.event.PhaseId;
    import javax.faces.event.PhaseListener;
     
    /**
     * Cycle de vie d'une requête JSF
     * @author Olivier BUTTERLIN
     */
    public class LifeCycleListener implements PhaseListener
    {
        public static final long serialVersionUID = 1;
     
        public LifeCycleListener()
        {
            super();
        }
     
        public PhaseId getPhaseId()
        {
            return PhaseId.ANY_PHASE;
        }
     
        /**
         * Au début d'une phase
         */
        public void beforePhase(PhaseEvent event)
        {
            if (event.getPhaseId() == PhaseId.RESTORE_VIEW)
            {
                System.out.println(event.getPhaseId() + " --> " + event.getFacesContext().getExternalContext().getRequestServletPath());
            }
            else if (event.getPhaseId() == PhaseId.APPLY_REQUEST_VALUES)
            {
                Map<String, String> map = event.getFacesContext().getExternalContext().getRequestParameterMap();
                if (!map.isEmpty())
                {
                    StringBuilder sb = new StringBuilder();
                    for (String key : map.keySet())
                    {
                        sb.append("      ").append(key).append(" = \"").append(map.get(key).replaceAll("\r", "").replaceAll("\n", "\\\\n")).append("\"\n");
                    }
                    sb.delete(sb.length()-1, sb.length());
                    System.out.println(event.getPhaseId() + " -->\n" + sb.toString());
                }
            }
            else
            {
                System.out.println(event.getPhaseId());
            }
        }
     
        /**
         * A la fin d'une phase
         */
        public void afterPhase(PhaseEvent event)
        {
              System.out.println("\n");
        }
    }
    tu le paramètres dans le faces-config.xml comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        <lifecycle>
            <phase-listener>ton.package.LifeCycleListener</phase-listener> 
        </lifecycle>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Voici ce que ça sort :

    RESTORE_VIEW 1 --> /connexion/login.xhtml


    APPLY_REQUEST_VALUES 2 -->
    javax.faces.partial.ajax = "true"
    javax.faces.source = "connexionForm:doLogin"
    javax.faces.partial.execute = "@all"
    javax.faces.partial.render = "connexionForm:growl"
    connexionForm:doLogin = "connexionForm:doLogin"
    connexionForm = "connexionForm"
    connexionForm:login = "user"
    connexionForm:password = "pswd"
    javax.faces.ViewState = "H4sIAAAAAAAAAI1UXYhMURw/e3dnWYvGro/dstrWEuJOZEuW2Ji1k9kPhsnHA2fvPWbO7r33XOecO3OHKA8oEoUkRPHgYXnx5IUkKWVjXxQppORBScqDF+ecO3NnlhGn5nam8/t//X7//3/sC4i4jIJZIzAHdY9jS++DLNsP3ciU148ez93/shZovWCaRaDZCw1OaAI08CxFLEss03c3bATyTM9PFd+o+NVx0GoQx0E+Jk4vofbaA4RmEE+SDHY8Cpr3JlUoCzoZfXB4BBm8+9z4rutRttTSAPBd4SPiHQRHQa241YQ3TSS5wiC2zjxHPwANxNTXQpzpyNJ3wEw/4llixn1XJMdEcBCcmunCKwWtMqovob/jDibnNe45+/6rpnDNIa6MuHn8VOrbnol1Kj+RR4eoSIcuNLKomsOE7VrxwpVktOVGQQaXJUzNd4L2hYcnMaNXMLMZcngEgN8JSnGKnUz3nYn0p89th7eUCKrhoC3IM2AC5ZDD9R6DC89xeXddP78NDMbCeDFLRtH9LLet9o2rVy7v6mqHCp/EjCMH0fUd/0qvw2eylMb8qv8oZWa5iDTBptJxhtRDpOaKw0FkZB82V5YFDm8R+R7+qz0qhK8sVjSBSxxZ8M5EGqP8dkJ45xAlLqK8sBUVWFF40KQErUgk7nh25aNIot6CjCfMcAIULuFwlEG06cONWz+OnVyjgZoEiOSg5SHhL1rGDXj2MKInxi62NV54dzrsXllcvSyOr65anRB59t4qY9Dy8Gfq4+ibZ6HKZescBZ1/Cj5EGO8xzR1E0qB0/3r6/pNX0Xv3g15e/KfJphJ5qYKQ3VZGDzJrvqfH0zMDoyqNVYFdNHrpMX7bOh5g55S3hnoNCkmeaRhosY/cLo1LcxnVQyksyI7zj020XX4Kr9VKbusYPoRUyVq+rjjri6tLnuKQoz6xehBNwRyiu5/dW3/+6vN+DWhJ0GAINdkAtBEHTYrfmOQ3VpyiJJjGhI2pfHAwN0BgEkshiqGFD8FhC3WL7sxJ3peoZl/GQfxvzRdy2VmN1dJc9ZjQ5YgK0ecVNcdEnxTx7ouGsdSrL4mS7lrF0ivm0DV581HkCAJGMdflPO8bhgwbgpqCJdYyQny7ekbUFW2z4G/ZD3rc9TgoHz+czPmTo20uONDGRrBemEppiTRQWgHf/wW0uDlJRAYAAA=="
    Username : null
    mot de passe : null


    RENDER_RESPONSE 6
    Par contre je ne sais pas comment l'analyser

    A noter aussi que les variables login et password de mon ManagedBean ne sont pas affectée avec la valeur saisie dans le formulaire

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Tu as utilisé la valeur "user" pour le champ login et "pswd" pour le mot de passe, visiblement, tu utilises la conservation d'état côté "CLIENT", personnellement, j'utilise la conservation côté serveur (plus sûre)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        <context-param>
            <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
            <param-value>server</param-value>
        </context-param>
    Mais bref, le problème n'est pas là, tu as oublié de mettre les setter pour login, password et isRemembered, je n'avais pas fait gaffe à ce détail mais ta trace m'a fait tiquer
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    J'ai mis les setters mais ça ne marche toujours pas.
    Par contre je ne vois de différence dans le log... Comment tu t'en es rendu compte ?
    J'ai également mis la conservation coté serveur (je regarderai ce que cela implique. J'avais client car j'ai vu dans des exemples de tuto)

    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
    97
    98
    package ch.rwb.application.forms.login;
     
    import java.io.IOException;
     
    import javax.annotation.PostConstruct;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.servlet.RequestDispatcher;
     
    import ch.rwb.application.beans.utilisateur.Utilisateur;
     
    @ManagedBean
    @RequestScoped
    public class ConnexionForm {
     
    	private String login;
    	private String password;
    	private boolean isRemembered;
    	private String originalURL;
     
    	/**
             * Default Constructor
             */
    	public ConnexionForm() {
     
    	}
     
    	@PostConstruct
    	public void init() {
    		ExternalContext externalContext = FacesContext.getCurrentInstance()
    				.getExternalContext();
    		originalURL = (String) externalContext.getRequestMap().get(
    				RequestDispatcher.FORWARD_REQUEST_URI);
     
    		if (originalURL == null) {
    			originalURL = externalContext.getRequestContextPath()
    					+ "/modele/layout.xhtml";
    		} else {
    			String originalQuery = (String) externalContext.getRequestMap()
    					.get(RequestDispatcher.FORWARD_QUERY_STRING);
     
    			if (originalQuery != null) {
    				originalURL += "?" + originalQuery;
    			}
    		}
    	}
     
     
    	public String getLogin() {
    		return login;
    	}
     
    	public void setLogin(String login) {
    		this.login = login;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public boolean getIsRemembered() {
    		return isRemembered;
    	}
     
    	public void setIsRemembered(boolean isRemembered) {
    		this.isRemembered = isRemembered;
    	}
     
    	public void authenticate() throws IOException {
    		FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext externalContext = context.getExternalContext();
     
    		try {
    			 System.out.println("Username : "+ login);
    			 System.out.println("mot de passe : "+ password);
     
    			 Utilisateur user = new Utilisateur();
    			 user.setLogin("lapaire");
     
    			 if("test".equals(login) && "passwd".equals(password)){
    				 externalContext.getSessionMap().put("user", user);
    			     externalContext.redirect(originalURL);
    		     } 
     
    			 throw new Exception("Invalid user/password");
    		} catch (Exception e) {
    	        context.addMessage(null, new FacesMessage("Unknown login"));
    	    }
     
    	}
    }
    RESTORE_VIEW 1 --> /connexion/login.xhtml


    APPLY_REQUEST_VALUES 2 -->
    javax.faces.partial.ajax = "true"
    javax.faces.source = "connexionForm:doLogin"
    javax.faces.partial.execute = "@all"
    javax.faces.partial.render = "connexionForm:growl"
    connexionForm:doLogin = "connexionForm:doLogin"
    connexionForm = "connexionForm"
    connexionForm:login = "sdc"
    connexionForm:password = "ddd"
    javax.faces.ViewState = "-1479951085032535514:-7524555262564253133"
    Username : null
    mot de passe : null


    RENDER_RESPONSE 6

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je ne serais pas surpris que ce soit ton attribut boolean qui pose problème, le setter associé à "isRemembered" devrait être "setRemembered" mais dans tous les cas, je te suggère de nommer l'attribut "remembered" tout court, du coup, tu auras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        private boolean remembered;
     
        public boolean isRemembered()
        {
            return remembered;
        }
     
        public void setRemembered(boolean remembered)
        {
            this.remembered = remembered;
        }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Je désespère ça parait tout simple pourtant
    J'ai aussi testé en mettant SessionScope sur mon managedbean. mais ça ne change rien ...

    RESTORE_VIEW 1 --> /connexion/login.xhtml


    APPLY_REQUEST_VALUES 2 -->
    javax.faces.partial.ajax = "true"
    javax.faces.source = "connexionForm:doLogin"
    javax.faces.partial.execute = "@all"
    javax.faces.partial.render = "connexionForm:growl"
    connexionForm:doLogin = "connexionForm:doLogin"
    connexionForm = "connexionForm"
    connexionForm:login = "nico"
    connexionForm:password = "jnc"
    javax.faces.ViewState = "-2441706300721473179:5140241323208727761"
    Username : null
    mot de passe : null


    RESTORE_VIEW 1 --> /modele/layout.xhtml


    RENDER_RESPONSE 6
    Et j'ai bien mis à jour remembered comme tu m'as dis
    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
    97
    98
    99
    100
    101
    102
    103
    package ch.rwb.application.forms.login;
     
    import java.io.IOException;
     
    import javax.annotation.PostConstruct;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.servlet.RequestDispatcher;
     
    import ch.rwb.application.beans.utilisateur.Utilisateur;
    import ch.rwb.application.utils.language.Messages;
     
    @ManagedBean
    @RequestScoped
    public class ConnexionForm {
     
    	private String login;
    	private String password;
    	private boolean remembered;
    	private String originalURL;
     
    	/**
             * Default Constructor
             */
    	public ConnexionForm() {
     
    	}
     
    	@PostConstruct
    	public void init() {
    		ExternalContext externalContext = FacesContext.getCurrentInstance()
    				.getExternalContext();
    		originalURL = (String) externalContext.getRequestMap().get(
    				RequestDispatcher.FORWARD_REQUEST_URI);
     
    		if (originalURL == null) {
    			originalURL = externalContext.getRequestContextPath()
    					+ "/modele/layout.xhtml";
    		} else {
    			String originalQuery = (String) externalContext.getRequestMap()
    					.get(RequestDispatcher.FORWARD_QUERY_STRING);
     
    			if (originalQuery != null) {
    				originalURL += "?" + originalQuery;
    			}
    		}
    	}
     
     
    	public String getLogin() {
    		return login;
    	}
     
    	public void setLogin(String login) {
    		this.login = login;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
     
    	public boolean isRemembered() {
    		return remembered;
    	}
     
    	public void setRemembered(boolean remembered) {
    		this.remembered = remembered;
    	}
     
    	public void authenticate() throws IOException {
    		FacesContext context = FacesContext.getCurrentInstance();
    		ExternalContext externalContext = context.getExternalContext();
     
    		try {
    			 System.out.println("Username : "+ login);
    			 System.out.println("mot de passe : "+ password);
     
    			 Utilisateur user = new Utilisateur();
    			 user.setLogin("lapaire");
     
    //			 if("test".equals(login) && "passwd".equals(password)){
    				 externalContext.getSessionMap().put("user", user);
    			     externalContext.redirect(originalURL);
    //		     } 
     
    //			 throw new Exception(getLoginErrorMessage());
    		} catch (Exception e) {
    	        context.addMessage(null, new FacesMessage(getLoginErrorMessage()));
    	    }
    	}
     
    	private String getLoginErrorMessage() {
    		return Messages.getMessage(null, "NomUtilisateurOuMotDePasseInconnu",
    				null).getSummary();
    	}
    }

  12. #12
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    Est-ce que ça ne vient pas du immediate=true ?
    Qui ferait qu'on passe dans le bean sans que les valeurs lui soient transmises ?
    J'en sais rien mais d'un coup ...

  13. #13
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    C'est bien ça enfin je crois

    J'ai enlevé le immediate=true du commandButton et ça fonctionne bien

  14. #14
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Attend, je vais copier ton code et faire un test chez moi, je te tiens au courant...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    On a dû écrire en même temps je crois

  16. #16
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    alors, j'ai testé le code, ça passe bien dans authenticate() et oui, avec immediate="true", les données ne sont pas affectées au modèle (puisque c'est fait pour "bypasser" ces phases)
    du coup, c'est ok
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre actif
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Points : 270
    Points
    270
    Par défaut
    C'est nickel, merci beaucoup

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

Discussions similaires

  1. Double action sur un bouton de formulaire
    Par thor8one dans le forum ASP
    Réponses: 4
    Dernier message: 15/11/2007, 10h07
  2. Réponses: 8
    Dernier message: 04/04/2007, 11h16
  3. Action automatique sur click d'un bouton de formulaire
    Par ned-flanders dans le forum Langage
    Réponses: 7
    Dernier message: 20/03/2007, 16h37
  4. Lancer une action JS depuis un bouton de formulaire
    Par davinout dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2006, 08h50
  5. Réponses: 2
    Dernier message: 03/02/2005, 08h59

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