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 :

[JSF] Séparation couches applicative/entreprise


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut [JSF] Séparation couches applicative/entreprise
    Bonjour à tous !

    Voilà j'ai un petit soucis dans la mise en oeuvre d'une architecture 5 couches pour une application Web que je suis en train de créer :

    Je désire conserver une distinction entre chacune des couches, et par conséquent je voudrais séparer mes beans (couche entreprise) de mes méthodes "utilitaires" (couche applicative).

    Plus concrètement, j'ai donc une architecture constituée :
    • - D'un BeanUtilisateur.java, contenant propriétés, accesseurs et modifieurs ;
      - D'un FctUtilisateurs.java, contenant les méthodes utiles relatives à un utilisateur (authentification, connexion, etc.). Cette classe prend évidemment en propriété un BeanUtilisateur.

    Voici ce que ça donne :

    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
    public class BeanUtilisateur extends Object implements Serializable {
     
        private String userPseudo;
        private String userPasswd;
     
        public BeanUtilisateur() {
        }
     
        public String getUserPseudo() { ... }
        public void setUserPseudo(String userPseudo) { ... }
     
        public String getUserPasswd() { ... }
        public void setUserPasswd(String userPasswd) { ... }
     
        // ...
    }
    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
    public class FctUtilisateur {
     
        public FctUtilisateur() {
        }
     
        private BeanUtilisateur user;
     
        public BeanUtilisateur getUser() { ... }
        public void setUser(BeanUtilisateur user) { ... }
     
        /**
         * User login process
         */
        public boolean login() {
            // Verif LDAP
            // Attribution privileges
        }
    }
    Donc me voici dans ma page login.jsp, avec un code du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <core:view>
    <h1>Identification</h1>
    <html:form>
      Nom d'utilisateur :  <html:inputText value="#{utilisateur.userPseudo}"/>
      <br>Mot de passe :  <html:inputSecret value="#{utilisateur.userPasswd}"/>
      <br>
      <html:commandButton value="Connexion" action="#{????}" />
    </html:form>
    </core:view>
    Mais voilà, je souhaite appeler la fonction FctUtilisateur.login() dans le "action" du commandButton, mais je ne sais comment faire...

    Si je manage mon "bean" FctUtilisateur, comment faire comprendre que l'utilisateur à prendre en compte pour l'appel à login() est celui initialisé par les 2 inputText qui précèdent ?

    J'espère avoir été clair, merci par avance...

  2. #2
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Si ton bean managé se nomme fctUtilisateur, alors tu devrais avoir quelque chose comme ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:commandButton value="Connexion" action="#{fctUtilisateur.login}" />

  3. #3
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    Oups, j'ai oublié une partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nom d'utilisateur :  <html:inputText value="#{fctUtilisateur.user.userPseudo}"/>
    Mot de passe :  <html:inputSecret value="#{fctUtilisateur.user.userPasswd}"/>

  4. #4
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut
    Salut,

    Et bien non, justement, le bean managé n'est pas FctUtilisateur mais BeanUtilisateur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <managed-bean>
            <managed-bean-name>utilisateur</managed-bean-name>
            <managed-bean-class>entreprise.users.BeanUtilisateur</managed-bean-class>
            <managed-bean-scope>session</managed-bean-scope>
        </managed-bean>
    En temps normal, si je n'avais pas tenu à séparer les couches applicatives et business, j'aurais écrit la méthode login() dans mon BeanUtilisateur.java. Dans ce cas là, pas de pb, effectivement.

    Mon problème vient justement de cette séparation. Donc d'une, est-ce que je peux manager plusieurs beans pour une JSP ? Et si oui, je reviens à ma question du post précédent, comment faire la liaison entre l'utilisateur initialisé par les inputText et l'utilisateur sur lequel je vais appliquer ma méthode login() ?

    Merci

  5. #5
    Membre confirmé Avatar de Original Prankster
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 226
    Par défaut
    Ah OK, avec la deuxième partie effectivement ça me semble jouable...

  6. #6
    Membre chevronné
    Inscrit en
    Août 2005
    Messages
    352
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 352
    Par défaut
    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
    <managed-bean>
        <managed-bean-name>fctUtilisateur</managed-bean-name>
        <managed-bean-class>entreprise.users.FctUtilisateurs</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>user</property-name>
            <value>#{utilisateur}</value>
        </managed-property>
    </managed-bean>
     
    <managed-bean>
        <managed-bean-name>utilisateur</managed-bean-name>
        <managed-bean-class>entreprise.users.BeanUtilisateur</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 511
    Par défaut
    Moi j'ai un peu le meme probleme que toi. J'ai une classe ListObjetBean qui contient une variable private ObjetBean ListObj (ObjetBean à 2 variables String : nom et champ).
    J ai essayé de faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <h:outputText value="nom de l'objet" style="font-weigth : bold" />
        	<h:inputText value="#{ListObjetBean.ListObj.nom}" id="nom_objet" rendered="true" required="true"/>
     
        	<h:outputText value="Champs" />
        	<h:panelGroup>
        	<h:inputTextarea rows="5" cols="5" value="#{ListObjetBean.ListObj.champ}" />
    <h:commandButton value="  OK  " action="#{ListObjetBean.save}" id="submit" />
    Mais bon ça ne marche pas. j'ai l'impression que l'erreur vient du constructeur de ListObjetBean (je l ai laissé vide mais il à pas l'air d'apprecier).

    Donc si t as resolu ton probleme merci de m'expliquer comment.

Discussions similaires

  1. [N-Tier] Découper les couches applicatives
    Par storm_2000 dans le forum Autres
    Réponses: 4
    Dernier message: 07/11/2008, 18h57
  2. [N-Tier] 5 couches applicatives est-ce trop?
    Par grunt2000 dans le forum Autres
    Réponses: 3
    Dernier message: 17/12/2007, 11h23
  3. Séparation couches persisance/métier
    Par KneXtasY dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/05/2007, 16h09
  4. [Framework] Conception d'une couche applicative Spring
    Par joseph_p dans le forum Spring
    Réponses: 10
    Dernier message: 17/03/2007, 10h43
  5. Couche applicative
    Par azman0101 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 11/03/2005, 14h28

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