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

Servlets/JSP Java Discussion :

JSF/J2EE - Problème de gestion de cache


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut JSF/J2EE - Problème de gestion de cache
    Bonjour à tous,

    Je rencontre un problème de gestion de cache sur mon application JSF. Lors de la connexion à mon application, une première page d'accueil propose aux clients la connexion par login/mdp.
    Si je fais plusieurs connexions à la suite, les champs se remplissent automatiquement avec le dernier identifiant, chose que je ne voudrais pas laisser.

    ET, si jamais dans ma base de données je n'ai plus de client, l'application ne se lance pas, car elle ne trouve plus de correspondance pour pré-remplir le champs, tout ceci venant du fait, que le cache stocke les infos.

    Auriez-vous une solution pour qu'au chargement de certaines pages, tout le cache soit vidé et que les champs soient tous vides ?

    Je suis débutant et j'espère avoir été clair.

    D'avance merci à tous !

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut comment as-tu declaré ta classe de login?
    ou le service qui va avec?
    Merci
    Eric

  3. #3
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Salut,

    Comme ceci dans le web.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <welcome-file-list>
            <welcome-file>connexion.xhtml</welcome-file>
        </welcome-file-list>
    Merci
    Fred

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    En ce qui me concerne, non, tu n'es pas clair...

    A priori, ce n'est pas un problème de cache, ce serait plutôt un mauvais scope pour le ManagedBean attaché à la page de login (sessionScope)

    Ou alors ce sont les valeurs déjà qui apparaissent lorsque tu commences à saisir dans le champ d'entrée, mais là, c'est le paramétrage du navigateur qui est en cause et autant dire que tu ne pourras pas déterminer celui du client.

    Bref, peux-tu préciser et montrer le code de la page de login, du bean associé ?

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si c'est le navigateur qui mémorise le user / pass, tu pdeux désactiver en rajoutant l'attribut autocomplete="off" sur l'input (et pour autant que JSF le supporte, je n'ai jamais essayé).

    Sinon, commeOButterlin, je soupconne que ton bean est très mal fichu et fait des choses qu'il ne devrais pas faire

  6. #6
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Bonjour à tous,

    j'ai en effet un gros doute sur la structure de mon code, voici :

    - connexion.xhtml
    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:ui="http://java.sun.com/jsf/facelets"
          xmlns:pou="http://primefaces.org/ui">
     
        <h:head>
            <link href="style.css" rel="stylesheet" type="text/css" title="Theme" />
        </h:head>
     
        <h:body>
            <div id="connexion">
                <h:form>
                    <pou:growl id="connexionGrowl" showDetail="true" sticky="true"/>
     
                    <pou:panel id="connexionPanel" header="Connexion" styleClass="panel">
                        <h:panelGrid columns="4">
                            <h:outputLabel value="Profil"/>
                            <h:outputLabel value="Identifiant"/>
                            <h:outputLabel value="Mot de passe"/>
                            <h:outputLabel value="Connexion"/>
     
     
                            <h:outputLabel value=" Client" />
                            <pou:inputText value="#{connectClient.login}"/>
                            <pou:inputText value="#{connectClient.mdp}" type="password"/>
                            <pou:commandButton id="clientButton" value="Connexion" actionListener="#{connectClient.connexionClient}" styleClass="button" action="accueilClient" update="connexionGrowl"/>
     
                        </h:panelGrid>
                    </pou:panel>
     
                    <pou:panel id="nouveauClientPanel" header="Nouveau Client" styleClass="panel" toggleable="true">
                        <h:panelGrid columns="4">
                            <h:outputLabel value="S'enregistrer :"/>
                            <pou:commandButton id="newCustomerButton" value="Formulaire" styleClass="button" action="ajoutClient"/>
     
                            <h:outputLabel value="Aide :"/>
                            <pou:commandButton id="helpButton" value="Contact" styleClass="button"/>
                        </h:panelGrid>
                </pou:panel>
                </h:form> 
            </div>
        </h:body>
    </html>
    - La managedBean associé :
    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
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package DTO;
     
    import DAO.ConnecBDD;
    import Models.Client;
    import java.io.IOException;
    import java.io.Serializable;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.faces.application.FacesMessage;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
     
    /**
     *
     * @author FixeFred
     */
    public class ConnectClient implements Serializable {
     
        //Objet Client
        private Client client;
        private String login;
        private String mdp;
     
        //Connexion BDD
        protected static final Connection bdd = ConnecBDD.getInstance();
     
        private Client clientTrouve;
     
        /**
         * Creates a new instance of connectClient
         */
        public ConnectClient() {
        }
     
        //authentification client
        public void connexionClient(ActionEvent event) throws IOException {
            FacesContext context = FacesContext.getCurrentInstance();
            ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
     
            if (login.equals("admin") & mdp.equals("admin")) {
                System.out.println("Connexion admin");
                context.addMessage(null, new FacesMessage("Identifié", "Bonjour Admin"));
                ec.redirect("./index.xhtml?faces-redirect=true");
     
            } else {
                System.out.println("Connexion client");
                String sqlClient = "Select nom, prenom, adresse, code_postale, ville, telephone, mobile, mail, identifiant, mdp FROM client WHERE identifiant = '" + login + "'";
                System.out.println(sqlClient);
                try {
                    Statement state = this.bdd.createStatement();
                    ResultSet rs = state.executeQuery(sqlClient);
                    rs.first();
                    setClientTrouve(new Client(rs.getString(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5), rs.getInt(6), rs.getInt(7), rs.getString(8), rs.getString(9), rs.getString(10)));
                    rs.close();
                    ec.redirect("./gestionClient.xhtml?faces-redirect=true");
                    context.addMessage(null, new FacesMessage("Identifié", "Bonjour " + clientTrouve.getPrenom()));
                } catch (SQLException e) {
                    System.out.println("Erreur authentification client : " + e.getMessage());
                    context.addMessage(null, new FacesMessage("Erreur", "Authentification refusée"));
                    ec.redirect("./connexion.xhtml?faces-redirect=true");
                }
            }
        }
     
        /**
         * @return the client
         */
        public Client getClient() {
            return client;
        }
     
        /**
         * @param client the client to set
         */
        public void setClient(Client client) {
            this.client = client;
        }
     
        /**
         * @return the login
         */
        public String getLogin() {
            return login;
        }
     
        /**
         * @param adminLogin the login to set
         */
        public void setLogin(String adminLogin) {
            this.login = adminLogin;
        }
     
        /**
         * @return the mdp
         */
        public String getMdp() {
            return mdp;
        }
     
        /**
         * @param adminMdp the mdp to set
         */
        public void setMdp(String adminMdp) {
            this.mdp = adminMdp;
        }
     
        /**
         * @return the clientTrouve
         */
        public Client getClientTrouve() {
            return clientTrouve;
        }
     
        /**
         * @param clientTrouve the clientTrouve to set
         */
        public void setClientTrouve(Client clientTrouve) {
            this.clientTrouve = clientTrouve;
        }
     
    }
    - Et enfin, le faces-config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <managed-bean>
            <managed-bean-name>connectClient</managed-bean-name>
            <managed-bean-class>DTO.ConnectClient</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
            <managed-property>
                <property-name>clientTrouve</property-name>
                <property-class>Models.Client</property-class>
                <value>#{clientTrouve}</value>
            </managed-property>
        </managed-bean>
    Dans le faces-config, j'ai du mal à comprendre comment et pourquoi déclarer les managed-property, ainsi que le fonctionnement de la persistance des objets.

    Pour moi 1 fichier .xhtml = 1 fichier .java = 1 managed bean déclaré dans le faces-config ?

    J'espère que ces éléments sont suffisants,

    Merci bcp !
    Fred

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Il ne faut pas utiliser le scope session pour ce traitement, il ne doit y avoir aucune persistance des informations, change la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <managed-bean-scope>session</managed-bean-scope>
    en
    <managed-bean-scope>request</managed-bean-scope>
    Pour faire simple, le scope indique la durée de vie de l'objet et donc des valeurs qu'il contient.
    On en distingue 3 grands :
    - application, accessible par tous les utilisateurs de l'application
    - session, accessible par l'utilisateur en cours pour toute la durée de la session (HttpSession)
    - request, accessible par l'utilisateur en cours le temps de traiter sa demande

    Ensuite, avec JSF, on a en plus :
    - le scope view, les données sont accessibles à l'utilisateur en cours tant qu'il ne change pas de page (intéressant quand on a de l'ajax dans la page)
    - le scope conversation (si on utilise Seam), on détermine quand ça commence et quand ça termine, intéressant pour des saisies incluant plusieurs écrans
    - le "custom scope", mais là, je n'ai pas utilisé, il semble que tu programmes ce que tu veux

  8. #8
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Merci de ton aide, j'ai fait l'essai, ça fonctionne mais désormais je n'ai plus les renseignements sur la page suivante qui est l'espace perso de l'utilisateur identifié.
    Quand un client s'identifie avec sont login/mdp, je souhaite qu'il accède à son espace perso avec ses propres renseignements, en mettant le scope "request" je n'ai plus rien, voici le code de l'espace perso d'un client après son identification :

    - GestionClient.xhtml

    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
     
    <?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:ui="http://java.sun.com/jsf/facelets"
          xmlns:pou="http://primefaces.org/ui">
     
        <h:body>
            <ui:composition template="commonBody.xhtml">
                <ui:define name="menu">
                    <h:form>
                        <pou:panel header="Bonjour #{connectClient.clientTrouve.prenom}" styleClass="panel" >                       
                            <pou:accordionPanel multiple="true" styleClass="accordionPanel">
                                <pou:tab title="Mes informations">
                                    <pou:commandButton id="modifClientButton" value="Changer mes identifiants" styleClass="button"/>
                                    <pou:commandButton id="supprClientButton" value="Supprimer mon compte" styleClass="button"/>
                                </pou:tab>
                                <pou:tab title="Mes véhicules">
                                    <pou:commandButton id="ajoutVehiculeButton" value="Ajouter un véhicule" styleClass="button" action="gestionVehicule"/>
                                    <pou:commandButton id="modifVehiculeButton" value="Modifier un véhicule" styleClass="button"/>
                                    <pou:commandButton id="supprVehiculeButton" value="Supprimer un véhicule" styleClass="button"/>
                                    <pou:commandButton id="listVehiculeButton" value="Lister les Véhicules" styleClass="button"/>
                                </pou:tab>
                                <pou:tab title="Autres">
                                    <pou:commandButton id="connectButton" value="Retour accueil" actionListener="#{action.logout}" styleClass="button"/>
                                </pou:tab>
                            </pou:accordionPanel>
                        </pou:panel>
                    </h:form>
                </ui:define>
     
                <ui:define name="content">
                    <h:form>
                        <pou:panel id="informationClientPanel" header="Informations de #{connectClient.clientTrouve.prenom} #{connectClient.clientTrouve.nom}" styleClass="panel">
                        <h:panelGrid columns="2">
                                    <h:outputLabel value="Nom : "/>
                                    <h:inputText id="out1" value="#{connectClient.clientTrouve.nom}"/>
     
                                    <h:outputLabel value="Prénom : "/>
                                    <h:inputText id="out2" value="#{connectClient.clientTrouve.prenom}"/>
     
                                    <h:outputLabel value="Adresse :"/>
                                    <h:inputText id="out3" value="#{connectClient.clientTrouve.adresse}"/>
     
                                    <h:outputLabel value="Code postale :"/>
                                    <h:inputText id="out4" value="#{connectClient.clientTrouve.code_postale}"/>
     
                                    <h:outputLabel value="Ville : "/>
                                    <h:inputText id="out5" value="#{connectClient.clientTrouve.ville}"/>
     
                                    <h:outputLabel value="Telephone : "/>
                                    <h:inputText id="out6" value="#{connectClient.clientTrouve.telephone}"/>
     
                                    <h:outputLabel value="Mobile : "/>
                                    <h:inputText id="out7" value="#{connectClient.clientTrouve.mobile}"/>
     
                                    <h:outputLabel value="Mail : "/>
                                    <h:inputText id="out8" value="#{connectClient.clientTrouve.mail}"/>
     
                                    <h:outputLabel value="Identifiant : "/>
                                    <h:outputText id="out9" value="#{connectClient.clientTrouve.identifiant}"/>
     
                                    <h:outputLabel value="Mot de passe : "/>
                                    <h:inputText id="out10" value="#{connectClient.clientTrouve.mdp}"/>
     
                                </h:panelGrid>
                            <pou:commandButton id="majClientButton" value="Mise à jour" actionListener="#{modifierInformationClient.updateTable}"/>
                        </pou:panel>
                    </h:form>
                </ui:define>
     
            </ui:composition>
        </h:body>
    </html>
    - GestionClient.java
    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
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package DTO;
     
    import DAO.ConnecBDD;
    import java.io.Serializable;
    import java.sql.Connection;
     
    /**
     *
     * @author FixeFred
     */
    public class GestionClient implements Serializable {
     
        //Connexion BDD
        protected static final Connection bdd = ConnecBDD.getInstance();
     
        public GestionClient() {
     
        }
     
        //Modifier information client
        public void updateTable(){
            System.out.println("Debut UpdateTable");
     
            String sql = "UPDATE `client` SET `id`=[value-1],`nom`=[value-2],`prenom`=[value-3],`adresse`=[value-4],`code_postale`=[value-5],`ville`=[value-6],`telephone`=[value-7],`mobile`=[value-8],`mail`=[value-9],`identifiant`=[value-10],`mdp`=[value-11] WHERE 1";
     
        }
     
     
    }
    Ma classe GestionClient.java est en cours de réalisation, mais je n'arrive pas à récupérer les informations de la vue GestionClient.xhtml.

    Avec un scope "session" j'arrivais une fois le client identifié a afficher ses renseignements perso dans la page GestionClient.xhtml, mais si le client souhaite modifier ses infos perso, je n'arrive pas à récupérer les informations sur la vue présente pour lancer par exemple un "UPDATE TABLE...." selon les modifications faites par le client.

    Dois-je importer par getter/setter le "clientTrouve" présent dans ma classe ConnectClient.java qui gère la vue connexion.xhtml que j'ai collé dans mon message précédent ?

    Merci !!!

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Points : 9 529
    Points
    9 529
    Billets dans le blog
    1
    Par défaut
    Ce que je ferais, c'est de laisser ton managedbean d'authentification en scope request et de placer les informations utiles pour tes autres pages dans un managedbean en scope session

    J'inclurais ce deuxième bean dans le premier au moyen de l'injection comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    @ManagedBean(name = "authentificationBean")
    @RequestScoped
    public class AuthentificationBean
    {
       @ManagedProperty(value = "#{mesInformationsSession}")
       private MesInformationsSession mesInformationsSession;
    ...
    où "#{mesInformationsSession}" représente le nom du managedBean en session

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    d'accord avec OButterlin. Tu dois oublier l'idée 1 page, 1 bean. Les bean, en JSF servent à stocker de l'information, à plus ou moins long terme suivant le scope. Tu dois avoir ce genre de code:


    Formulaire d'authentification -> bean en scope request -> méthode d'action sur ledit bean qui valide l'authentification -> Mise à jour du bean session avec l'utilisateur en cours.

    Page logout -> action sur le bean session effacant toutes les données de l'utilisateur en cours.

  11. #11
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Bonjour,
    Merci pour vos réponses, cela m'aide beaucoup. Si j'ai bien compris :

    Page espace perso Client (GestionClient.java) (Scope : session) :
    - Je crée un objet de type "Client" nommé "ClientTrouve"
    - J'intègre les getter/setter de ClientTrouve

    Page d'authentification (ConnectClient.java) (Scope : request) :
    - J'ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @ManagedProperty(value = "#{GestionClient}")
        private GestionClient GestionClient;
    - Le client renseigne login/mdp
    - Recherche dans ma bdd
    - Si correspondance je retourne un résultat de type "Client" de la BDD
    - J'intègre ce "Client" obtenu à GestionClient.setClientTrouve (new Client (rs.getString (1)............);

    Vue espace perso Client (gestionClient.xhtml) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <h:outputLabel value="Nom : "/>
    <h:inputText id="out1" value="#GestionClient.clientTrouve.nom}"/>
    Suis-je sur la bonne voie ?

    Encore merci !

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    oui

  13. #13
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    J'ai une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    javax.servlet.ServletException: Impossible de créer le bean géré «connectClient».  Les problèmes suivants ont été détectés :
         - La propriété «GestionClient» du bean géré «connectClient» n’existe pas.
    J'ai plusieurs questions :
    - Dans quel scope dois-je mettre mes objets ?
    - Les objets doivent-ils être sérializable ?

    connexion.xhtml :
    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:ui="http://java.sun.com/jsf/facelets"
          xmlns:pou="http://primefaces.org/ui">
     
        <h:head>
            <link href="style.css" rel="stylesheet" type="text/css" title="Theme" />
        </h:head>
     
        <h:body>
            <div id="connexion">
                <h:form>
                    <pou:growl id="connexionGrowl" showDetail="true" sticky="true"/>
     
                    <pou:panel id="connexionPanel" header="Connexion" styleClass="panel">
                        <h:panelGrid columns="4">
                            <h:outputLabel value="Profil"/>
                            <h:outputLabel value="Identifiant"/>
                            <h:outputLabel value="Mot de passe"/>
                            <h:outputLabel value="Connexion"/>
     
     
                            <h:outputLabel value=" Client" />
                            <pou:inputText value="#{connectClient.login}"/>
                            <pou:inputText value="#{connectClient.mdp}" type="password"/>
                            <pou:commandButton id="clientButton" value="Connexion" actionListener="#{connectClient.connexionClient}" styleClass="button" action="accueilClient" update="connexionGrowl"/>
     
                        </h:panelGrid>
                    </pou:panel>
     
                    <pou:panel id="nouveauClientPanel" header="Nouveau Client" styleClass="panel" toggleable="true">
                        <h:panelGrid columns="4">
                            <h:outputLabel value="S'enregistrer :"/>
                            <pou:commandButton id="newCustomerButton" value="Formulaire" styleClass="button" action="ajoutClient"/>
     
                            <h:outputLabel value="Aide :"/>
                            <pou:commandButton id="helpButton" value="Contact" styleClass="button"/>
                        </h:panelGrid>
                </pou:panel>
                </h:form> 
            </div>
        </h:body>
    </html>
    ConnectClient.java :
    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
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package DTO;
     
    import DAO.ConnecBDD;
    import Models.Client;
    import java.io.IOException;
    import java.io.Serializable;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import javax.faces.application.FacesMessage;
    import javax.faces.bean.ManagedProperty;
    import javax.faces.context.ExternalContext;
    import javax.faces.context.FacesContext;
    import javax.faces.event.ActionEvent;
     
    /**
     *
     * @author FixeFred
     */
    public class ConnectClient implements Serializable {
     
        //Objet Client
        private Client client;
        private String login;
        private String mdp;
     
        //Connexion BDD
        protected static final Connection bdd = ConnecBDD.getInstance();
     
        private GestionClient GestionClient;
     
        /**
         * Creates a new instance of connectClient
         */
        public ConnectClient() {
        }
     
        //authentification client
        public void connexionClient(ActionEvent event) throws IOException {
            FacesContext context = FacesContext.getCurrentInstance();
            ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
     
            if (login.equals("admin") & mdp.equals("admin")) {
                System.out.println("Connexion admin");
                context.addMessage(null, new FacesMessage("Identifié", "Bonjour Admin"));
                ec.redirect("./index.xhtml?faces-redirect=true");
     
            } else {
                System.out.println("Connexion client");
                String sqlClient = "Select nom, prenom, adresse, code_postale, ville, telephone, mobile, mail, identifiant, mdp FROM client WHERE identifiant = '" + login + "'";
                System.out.println(sqlClient);
                try {
                    Statement state = this.bdd.createStatement();
                    ResultSet rs = state.executeQuery(sqlClient);
                    rs.first();
                    client = new Client(rs.getString(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5), rs.getInt(6), rs.getInt(7), rs.getString(8), rs.getString(9), rs.getString(10));
                    GestionClient.setClientActiv(client);             
                    rs.close();
                    ec.redirect("./gestionClient.xhtml?faces-redirect=true");
                    context.addMessage(null, new FacesMessage("Identifié", "Bonjour " + GestionClient.getClientActiv().getPrenom()));
                } catch (SQLException e) {
                    System.out.println("Erreur authentification client : " + e.getMessage());
                    context.addMessage(null, new FacesMessage("Erreur", "Authentification refusée"));
                    ec.redirect("./connexion.xhtml?faces-redirect=true");
                }
            }
        }
     
        /**
         * @return the client
         */
        public Client getClient() {
            return client;
        }
     
        /**
         * @param client the client to set
         */
        public void setClient(Client client) {
            this.client = client;
        }
     
        /**
         * @return the login
         */
        public String getLogin() {
            return login;
        }
     
        /**
         * @param adminLogin the login to set
         */
        public void setLogin(String adminLogin) {
            this.login = adminLogin;
        }
     
        /**
         * @return the mdp
         */
        public String getMdp() {
            return mdp;
        }
     
        /**
         * @param adminMdp the mdp to set
         */
        public void setMdp(String adminMdp) {
            this.mdp = adminMdp;
        }
     
     
        /**
         * @return the gestionClient
         */
        public GestionClient getGestionClient() {
            return GestionClient;
        }
     
        /**
         * @param gestionClient the gestionClient to set
         */
        public void setGestionClient(GestionClient gestionClient) {
            this.GestionClient = gestionClient;
        }
     
    }
    gestionClient.xhtml :
    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
     
    <?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:ui="http://java.sun.com/jsf/facelets"
          xmlns:pou="http://primefaces.org/ui">
     
        <h:body>
            <ui:composition template="commonBody.xhtml">
                <ui:define name="menu">
                    <h:form>
                        <pou:panel header="Bonjour #{GestionClient.clientActiv.prenom}" styleClass="panel" >                       
                            <pou:accordionPanel multiple="true" styleClass="accordionPanel">
                                <pou:tab title="Mes informations">
                                    <pou:commandButton id="modifClientButton" value="Changer mes identifiants" styleClass="button"/>
                                    <pou:commandButton id="supprClientButton" value="Supprimer mon compte" styleClass="button"/>
                                </pou:tab>
                                <pou:tab title="Mes véhicules">
                                    <pou:commandButton id="ajoutVehiculeButton" value="Ajouter un véhicule" styleClass="button" action="gestionVehicule"/>
                                    <pou:commandButton id="modifVehiculeButton" value="Modifier un véhicule" styleClass="button"/>
                                    <pou:commandButton id="supprVehiculeButton" value="Supprimer un véhicule" styleClass="button"/>
                                    <pou:commandButton id="listVehiculeButton" value="Lister les Véhicules" styleClass="button"/>
                                </pou:tab>
                                <pou:tab title="Autres">
                                    <pou:commandButton id="connectButton" value="Retour accueil" actionListener="#{action.logout}" styleClass="button"/>
                                </pou:tab>
                            </pou:accordionPanel>
                        </pou:panel>
                    </h:form>
                </ui:define>
     
                <ui:define name="content">
                    <h:form>
                        <pou:panel id="informationClientPanel" header="Informations de #{GestionClient.clientActiv.prenom} #{GestionClient.clientActiv.nom}" styleClass="panel">
                        <h:panelGrid columns="2">
                                    <h:outputLabel value="Nom : "/>
                                    <h:inputText id="out1" value="#{GestionClient.clientActiv.nom}"/>
     
                                    <h:outputLabel value="Prénom : "/>
                                    <h:inputText id="out2" value="#"/>
     
                                    <h:outputLabel value="Adresse :"/>
                                    <h:inputText id="out3" value="#"/>
     
                                    <h:outputLabel value="Code postale :"/>
                                    <h:inputText id="out4" value="#"/>
     
                                    <h:outputLabel value="Ville : "/>
                                    <h:inputText id="out5" value="#"/>
     
                                    <h:outputLabel value="Telephone : "/>
                                    <h:inputText id="out6" value="#"/>
     
                                    <h:outputLabel value="Mobile : "/>
                                    <h:inputText id="out7" value="#"/>
     
                                    <h:outputLabel value="Mail : "/>
                                    <h:inputText id="out8" value="#"/>
     
                                    <h:outputLabel value="Identifiant : "/>
                                    <h:outputText id="out9" value="#"/>
     
                                    <h:outputLabel value="Mot de passe : "/>
                                    <h:inputText id="out10" value="#"/>
     
                                </h:panelGrid>
                            <pou:commandButton id="majClientButton" value="Mise à jour" actionListener="#{modifierInformationClient.updateTable}"/>
                        </pou:panel>
                    </h:form>
                </ui:define>
     
            </ui:composition>
        </h:body>
    </html>
    GestionClient.java :
    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
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package DTO;
     
    import DAO.ConnecBDD;
    import Models.Client;
    import java.io.Serializable;
    import java.sql.Connection;
     
    /**
     *
     * @author FixeFred
     */
    public class GestionClient implements Serializable {
     
        //Connexion BDD
        protected static final Connection bdd = ConnecBDD.getInstance();
     
        private Client clientActiv;
     
        public GestionClient() {
     
        }
     
        //Modifier information client
        public void updateTable(){
            System.out.println("Debut UpdateTable");
     
            String sql = "UPDATE `client` SET `id`=[value-1],`nom`=[value-2],`prenom`=[value-3],`adresse`=[value-4],`code_postale`=[value-5],`ville`=[value-6],`telephone`=[value-7],`mobile`=[value-8],`mail`=[value-9],`identifiant`=[value-10],`mdp`=[value-11] WHERE 1";
     
        }
     
        /**
         * @return the clientActiv
         */
        public Client getClientActiv() {
            return clientActiv;
        }
     
        /**
         * @param clientActiv the clientActiv to set
         */
        public void setClientActiv(Client clientActiv) {
            this.clientActiv = clientActiv;
        }
     
     
    }
    faces-config.xml :
    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
     
        <managed-bean>
            <managed-bean-name>connectClient</managed-bean-name>
            <managed-bean-class>DTO.ConnectClient</managed-bean-class>
            <managed-bean-scope>request</managed-bean-scope>
            <managed-property>
                <property-name>GestionClient</property-name>
                <property-class>DTO.GestionClient</property-class>
                <value>#{GestionClient}</value>
            </managed-property>
        </managed-bean>
     
     <managed-bean>
            <managed-bean-name>GestionClient</managed-bean-name>
            <managed-bean-class>DTO.GestionClient</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
    A ce jour mes objets "Client" sont en scope session, j'ai l'impression de faire ping-pong :

    Client (Scope session) => GestionClient (Scope session) => ConnectClient (Scope request) => GectionClient (Scope session)

    Certains points m'échappent,

    Merci

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par Fred30 Voir le message
    J'ai une exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    javax.servlet.ServletException: Impossible de créer le bean géré «connectClient».  Les problèmes suivants ont été détectés :
         - La propriété «GestionClient» du bean géré «connectClient» n’existe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property-name>gestionClient</property-name>
    avec une minuscule

  15. #15
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    Une heure que je cherche....pour une misérable Majuscule !!!
    Ca fonctionne, un grand merci !

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

Discussions similaires

  1. Problème de header pour la gestion du cache
    Par Nico02 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 16/10/2014, 19h36
  2. Gestion du cache - Renouvelement vue JSF
    Par Fred30 dans le forum JSF
    Réponses: 0
    Dernier message: 26/07/2012, 12h00
  3. Problème de gestion de Cache
    Par voschielle dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/10/2007, 13h40
  4. Problème de gestion fichiers
    Par glutock dans le forum ASP
    Réponses: 2
    Dernier message: 08/04/2004, 12h55
  5. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 16h35

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