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à.
Version imprimable
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 daoCode:
1
2
3
4
5
6
7
8
9 public String connecter(){ try{ pers=loginService.findByLoginAndPassword(login, password); if(pers!=null){ ......}
Code:
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:
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:
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:
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:
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 :D
commence par nous montrer ta page JSF qui sert à la connexion
la voilà :Code:
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>
on peux voir le code de AuthentificationBean?
Code:
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 :aie:
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:
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>