comme on a pas de stacktrace, on a pas la moindre idée de comment ton DAO est appelé. Maitenant il est appelé, comme on te l'a mentionné, avec comme paramètres null,null. À toi de voir comment ces paramètres sont arrivés là.
comme on a pas de stacktrace, on a pas la moindre idée de comment ton DAO est appelé. Maitenant il est appelé, comme on te l'a mentionné, avec comme paramètres null,null. À toi de voir comment ces paramètres sont arrivés là.
voiçi une bref explication :
1- mon action connecter dans mon bean Authentification
2-implémentation dao
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public String connecter(){ try{ pers=loginService.findByLoginAndPassword(login, password); if(pers!=null){ ......}
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 import Entity.Utilisateur; import Interfaces.AuthentificationDAO; import java.io.Serializable; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * * @author Administrateur */ public class AuthentificationDaoImpl extends HibernateDaoSupport implements AuthentificationDAO,Serializable { public Utilisateur findByLoginAndPassword(String login,String pass){ try{ Utilisateur user=(Utilisateur) getHibernateTemplate().find("from Utilisateur user where user.login= '"+login+"'and user.pwd='"+pass+"'").get(0); return user; }catch(Exception e){ e.printStackTrace(); return null; } } }
j'attends votre aide
et dans ton connecter le "login" et "pass" il vienne d'ou? car ils doivent etre null dans se cas d'utilisation..
merci pour votre répense mais le "login" et "password" sont déclarés "private" avec ses getters et setters dans le bean Authentification qui contient aussi la méthode connecter
ton bean authentification tu le rempli comment? Donne toutes tes informations, on va pas s'amuser à faire un jeu de pistes à coup de question réponse pour savoir comment tu fourni ces login/pass!
j'ai pas saisi ta question ..mais je voudrais vous dire que j'ai deux interfaces AuthentificationService et AuthentificationDAO et deux classes implémentant ces deux dernières sont AuthentificationDaoImpl et AuthentificationServiceImpl
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 package implementation.service; import Entity.Utilisateur; import Interfaces.AuthentificationDAO; import Interfaces.AuthentificationService; import java.io.Serializable; /** * * @author Administrateur */ public class AuthentificationServiceImpl implements AuthentificationService,Serializable { private AuthentificationDAO loginDao; public Utilisateur findByLoginAndPassword(String login,String pass){ return loginDao.findByLoginAndPassword(login, pass); } public AuthentificationDAO getLoginDao(){ return loginDao; } public void setLoginDao(AuthentificationDAO loginDao){ this.loginDao=loginDao; } }
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 import Entity.Utilisateur; import Interfaces.AuthentificationDAO; import java.io.Serializable; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; /** * * @author Administrateur */ public class AuthentificationDaoImpl extends HibernateDaoSupport implements AuthentificationDAO,Serializable { public Utilisateur findByLoginAndPassword(String login,String pass){ try{ Utilisateur user=(Utilisateur) getHibernateTemplate().find("from Utilisateur user where user.login= '"+login+"'and user.pwd='"+pass+"'").get(0); return user; }catch(Exception e){ e.printStackTrace(); return null; } } }
et ça cé mon prob : comment le login et pass prennent les valeurs saisies dans les inputText ?? est-ce qu'il ya une sorte de listener ???
si tu nous montrait déjà comment tu essaie de les faire rentrer dedans, non? Pour le moment, on sais rien du tout de ton bean (session, request, mapping, comment il est accédé, qui appelle ta méthode connecter, son code etc). Donc pour le moment on peux juste dire que t'as pas mis le login/pass dans ton bean.
mon bean est en scope session et comme je vous ai dis avant qu'il implémente deux interfaces DAO et Service et voiçi le mapping dans le fichier applicationContext-servlet.xml :
et voiçi mon web.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <bean id="loginDao" class="implementation.dao.AuthentificationDaoImpl"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate"/> </property> </bean> <bean id="loginService" class="implementation.service.AuthentificationServiceImpl"> <property name="loginDao"> <ref bean="loginDao"/> </property> </bean>
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 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><context-param><param-name>com.sun.faces.verifyObjects</param-name><param-value>false</param-value></context-param><context-param><param-name>com.sun.faces.validateXml</param-name><param-value>true</param-value></context-param><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><param-value>client</param-value></context-param> <filter> <display-name>RichFaces Filter</display-name> <filter-name>richfaces</filter-name> <filter-class>org.ajax4jsf.Filter</filter-class> </filter> <filter-mapping> <filter-name>richfaces</filter-name> <servlet-name>Faces Servlet</servlet-name> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> <dispatcher>INCLUDE</dispatcher> </filter-mapping> <servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>javax.faces.webapp.FacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>/faces/*</url-pattern></servlet-mapping><session-config><session-timeout> 30 </session-timeout></session-config><welcome-file-list> <welcome-file>faces/accueil.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value>/WEB-INF/faces-config.xml</param-value> </context-param> <!--context-param> <param-name> org.richfaces.SKIN</param-name> <param-value>wine</param-value> </context-param--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-servlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>applicationContext</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet> </web-app>
oui ben on a vu qu'il implémentait deux interface, mais tes login/pass, il viennent de OÙ ? Comment tu les envoier vers tes bean, comment tu appelle ta méthode connecter?
en faite cé ma question comment mon action connecter prend les valeurs saisies des inputText ?? pouvez-vous m'expliquer car je crois que le role des beans et jsf ???
_____________________________________________________________
je débute J2EE alors peut etre mes questions vous parait un peu
bizarre
la voilà :
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 <%@taglib uri="http://richfaces.org/a4j" prefix="a4j" %> <%@taglib uri="http://richfaces.org/rich" prefix="rich" %> <%@taglib prefix="f" uri="http://java.sun.com/jsf/core" %> <%@taglib prefix="h" uri="http://java.sun.com/jsf/html" %> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <f:view> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <LINK rel="stylesheet" type="text/css" href="SiteStyle.css"/> <title> Accueil </title> </head> <body class="thrColHybHdr"> <h:form id="container"> <div id="header"> <a4j:include viewId="Entete.jsp"/> <a4j:include viewId="Menu.jsp"/> </div> <rich:spacer height="20px"></rich:spacer> <div id="sidebar2" > <rich:panel id="logpan" style="background-image:url(#{facesContext.externalContext.requestContextPath}/images/Authentif.png);background-repeat:no-repeat;background-position:-35px-15px;"header="Authentification" styleClass="panel_3"> <h:outputText value="login:"/> <h:inputText id="log" value="#{AuthentificationBean.login}" required="true" requiredMessage="champs obligatoire"/> <rich:message for="log" style="color: red"/> <h:outputText value="Password:"/> <h:inputSecret id="mdp" value="#{AuthentificationBean.password}" required="true" requiredMessage="champs obligatoire"/> <rich:message for="mdp" style="color: red"/> <rich:spacer height="20px"></rich:spacer> <a4j:commandButton value="connexion" action="#{AuthentificationBean.connecter}" > </a4j:commandButton> <h:outputText value="j'ai pas un compte! je veux"/> <a4j:commandLink onclick="document.location.href='#{facesContext.externalContext.requestContextPath}/faces/inscription.jsp'"> <h:outputText value="s'inscrire"/> </a4j:commandLink> </rich:panel> </div> </h:form> </body> </html> </f:view>
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 package Beans; import Entity.Utilisateur; import Interfaces.AuthentificationService; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; /** * * @author Administrateur */ public class AuthentificationBean extends messageBean implements Serializable { private AuthentificationService loginService; private String login; private String password; private Utilisateur pers; private String message; public AuthentificationBean() { } public String getLogin(){ return this.login; } public void setLogin(String login){ this.login=login; } public String getPassword(){ return this.password; } public void setPassword(String password){ this .password=password; } public String connecter(){ String droi=null; message=""; try{ pers=loginService.findByLoginAndPassword(login,password); if(pers!=null){ if(pers.getDroit().equals("admin")){ droi= "admin"; }else if(pers.getDroit().equals("user")){ droi="user"; }System.out.println("******DROIT****"+droi); return droi; }else { message=" Echec de connexion ,veuillez vérifier votre login et mot de passe!"; style_message="err_message"; this.login=""; this.password=""; return "invalide"; } }catch(Exception e){ e.printStackTrace(); message=" Echec de connexion ,veuillez vérifier votre login et mot de passe!"; style_message="err_message"; this.login=""; this.password=""; return "invalid"; } } public String deconnecter(){ try{ ExternalContext ExtContext=FacesContext.getCurrentInstance().getExternalContext(); ExtContext.getSessionMap().clear(); }catch(Exception ex){ ex.printStackTrace(); } return "ok"; } public String getMessage(){ return message; } public void setMessage(String message){ this.message=message; } public AuthentificationService getLoginService(){ return loginService; } public void setLoginService(AuthentificationService loginService){ this.loginService=loginService; } public Utilisateur getPers(){ return pers; } public void setPers(Utilisateur pers){ this.pers =pers; } }
pour vérifier, tu peux remplacer ton a4j:commandButton par un h:commandButton?
Parce que là je seceh, les valeurs devraient etre transmises à ton bean par JSF
oui ça n'a rien changé ..avec <h:....> la page s'actualise sans faire aucun changement et l'erreur n'apparait pas c-a-d elle n'a pas fonctionné puisqu'elle ne suit pas les "navigation-rules"
pouvez-vous m'expliquer la différence entre les fichiers DispatcherServlet et applicationContext ???
nn cé la meme erreur que précedement avec a4j
est-ce que cette déclaration est juste dans le web.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<context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext-servlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>applicationContext</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>2</load-on-startup> </servlet>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager