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 :

recuperer les attribut d'un managedbean dans une classe metier


Sujet :

JSF Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut recuperer les attribut d'un managedbean dans une classe metier
    salut,
    pour ecrire un cas d'utilisation authentification je voudrait utliser deux classes:
    • un managed bean userBean qui va contenir les donnés saisi par l'utilisateur depuis le formulaire html

    • une classe métier LoginManager qui contient la methode login qui permet l'authentification


    mon problème est comment récupérer les attributs username et password depuis le managedbean userBean dans mon classe metier LoginManager
    j'ai essayé le code suivant mais j'ai obtenu l'erreur nullPointerException
    mon managed bean UserBean
    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
     
    public class UserBean {
    	private String username;
    	private String password;
     
    	public String getUsername() {
    		return username;
    	}
     
    	public void setUsername(String username) {
    		this.username = username;
    	}
     
    	public String getPassword() {
    		return password;
    	}
     
    	public void setPassword(String password) {
    		this.password = password;
    	}
    }
    ma classe métier LoginManager
    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
     
    public class LoginManager{
     
     
    	public LoginManager(){}
     
     
    	public String login(){
     
    		UserBean user=new UserBean();
    		String loginName=user.getUsername();
    		String password=user.getPassword();
     
    		if(loginName.equals("user") && password.equals("user")){
    			HttpSession session=SessionUtil.getSession();
    			session.setAttribute("User",loginName);
     
    			return "successLogin";
    		}
    		else{
    			FacesContext facesContext = FacesContext.getCurrentInstance();
    			FacesMessage myFacesMessage = new FacesMessage(Internationalisation.get("ERROR_NOT_VALID_USER"));
    			facesContext.addMessage(null, myFacesMessage);
    			return "failLogin";
    		}
    	}
     
    }
    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
     
    java.lang.NullPointerException
    	at tn.com.tradenet.swim.monitoring.model.LoginManager.login(LoginManager.java:23)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:585)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:172)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
    	at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)
    	at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)
    	at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)
    	at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at tn.com.tradenet.swim.monitoring.model.TimeoutFilter.doFilter(TimeoutFilter.java:66)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:177)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:380)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    	at java.lang.Thread.run(Thread.java:595)

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    A mon avis tu ne vas pas dans la bonne direction.

    Ton UserBean doit être une propriété de ton managedBean.
    Il est donc déclaré dans sa classe dans un autre package.
    dans tes vues, utilise la syntaxe suivante :
    <h:inputText value="#{monManagedBean.monUserBean.password}>

    et dans ton managedBean, une methode login ,qui logiquement ne fait pas le traitement mais appelle une méthode du metier -en lui passant l'objet userBean qu'elle a en propriété- qui lui va apeller la persistance etc

    <h:commandButton action="#{monManagedBean.login} value="valider">

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    merci Malone pour la réponse
    mais je n'ai pas compris qu'estce que tu veut dire avec
    Citation Envoyé par Malone Voir le message
    et dans ton managedBean, une methode login ,qui logiquement ne fait pas le traitement mais appelle une méthode du metier -en lui passant l'objet userBean qu'elle a en propriété- qui lui va apeller la persistance etc
    je pense que UserBean est bien mon ManagedBean

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    Pour faire simple ton managedBean va te servir à remplir -via ta vue et les saisies de l'utilisateur- un objet UserBean (qui n'est pas un managedBean mais un bean de stockage de données), puis à envoyer cet objet à ta classe métier (ta classe LoginManager dans ton exemple)

    par exemple ton bean UserBean
    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
     
    public class UserBean {
     
    	private String username;
    	private String password;
     
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	public String getPassword() {
    		return password;
    	}
    }

    ton managedBean avec un UserBean en propriété.
    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
     
    public class LoginManagedBean {
     
    	private UserBean monUser = new UserBean();
     
    	public void setMonUser(UserBean monUser) {
    		this.monUser = monUser;
    	}
     
    	public UserBean getMonUser() {
    		return monUser;
    	}
     
    	public String login() {
    		//ici tu apelle la couche métier (ta classe loginManager dans ton exemple)en lui passant l'utilisateur monUser
    		monAppelMetier.maMethodeDeLogin(this.monUser);
    		//puis tu renvoie une String de navigation, ou tu affiches un faceMessage etc
    		if (xxx) {
    			blablalbla etc
    		}
    	}
    }
    et coté vue cela donnerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:outputText value="Login: "> <h:inputText value="#{monManagedBean.monUser.userName} " />
    <br />
    <h:outputText value="password: "> <h:inputText value="#{monManagedBean.monUser.password} " />
    <br />
    <h:commandButton action="#{monManagedBean.login}" value="valider">

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    686
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 686
    Points : 118
    Points
    118
    Par défaut
    Citation Envoyé par Malone Voir le message
    Pour faire simple ton managedBean va te servir à remplir -via ta vue et les saisies de l'utilisateur- un objet UserBean (qui n'est pas un managedBean mais un bean de stockage de données), puis à envoyer cet objet à ta classe métier (ta classe LoginManager dans ton exemple)

    par exemple ton bean UserBean
    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
     
    public class UserBean {
     
    	private String username;
    	private String password;
     
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public void setPassword(String password) {
    		this.password = password;
    	}
    	public String getPassword() {
    		return password;
    	}
    }

    ton managedBean avec un UserBean en propriété.
    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
     
    public class LoginManagedBean {
     
    	private UserBean monUser = new UserBean();
     
    	public void setMonUser(UserBean monUser) {
    		this.monUser = monUser;
    	}
     
    	public UserBean getMonUser() {
    		return monUser;
    	}
     
    	public String login() {
    		//ici tu apelle la couche métier (ta classe loginManager dans ton exemple)en lui passant l'utilisateur monUser
    		monAppelMetier.maMethodeDeLogin(this.monUser);
    		//puis tu renvoie une String de navigation, ou tu affiches un faceMessage etc
    		if (xxx) {
    			blablalbla etc
    		}
    	}
    }
    et coté vue cela donnerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <h:outputText value="Login: "> <h:inputText value="#{monManagedBean.monUser.userName} " />
    <br />
    <h:outputText value="password: "> <h:inputText value="#{monManagedBean.monUser.password} " />
    <br />
    <h:commandButton action="#{monManagedBean.login}" value="valider">
    merci infiniment Malone
    c'est claire maintenant

  6. #6
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Si ça répond à ton problème, pense au bouton !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

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

Discussions similaires

  1. [DATA] Recuperer les champs de ta table dans une macro variable
    Par Deciprog dans le forum SAS Base
    Réponses: 5
    Dernier message: 04/05/2010, 11h05
  2. [MySQL] recuperer les données d'un formulaire dans une table
    Par chabeka dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/10/2008, 10h27
  3. Réponses: 2
    Dernier message: 07/08/2007, 19h48
  4. Comment recuperer les info d'un formulaire dans une boite de dialogue
    Par frutix dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 31/05/2006, 11h42
  5. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26

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