Bonjour à tous,
J'ai un projet de webapp en Servlet-Jsp-Ajax-JQuery. Le principe est que des Consultants seront gérés par des RDS, qui seront eux-même gérés par des Admin.
Là, mon probleme se situe lors du dialogue entre les objets Consultants et les objets RDS.
Pour commencer, j'ai donc créé mes classes Rds et Consultant ainsi que les classes RdsSql et ConsultantSql associées.
Après un petit script de test, tout fonctionne.
Ça se corse lorsque j'essaye de réaliser cela à partir du navigateur.
L'accueil est une page demandant le login et mdp.
Au clic, on appelle la ServletConnexion qui vérifie la présence de l’identifiant et du mot de passe dans la base.
Si elle trouve une correspondance, elle renvoie vers la page d'accueil de la catégorie concernée (rds ou admin).
ça marche.
Pour le RDS, la servlet enregistre l'objet rds en session (et/ou on est redirigé sur la page default.jsp, qui inclus "header.jsp - consultant.jsp et footer.jsp
Cette page est ensuite gérée par la ServletConsultant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <% //On recupere notre objet rds Rds rds=new Rds(); rds=(Rds)session.getAttribute("rds"); out.print(rds.getId_rds()); %> <td><img id="<%="img_"+rds.getConsultants().get(i).getId_consultant()%>" class="btnModifier" src="images/icone_modifier.png" /></td> <td><a class="btnSupprimer" href="<%="javascript:supprimer("+rds.getConsultants().get(i).getId_consultant()+")"%>"><img src="images/icone_supprimer.png" /></a></td> <input id="ajouter" type="button" value="Ajouter"/> </div>
C'est là que tout se corse. J'ai des problèmes lorsque je cherche a récupérer mes attributs passés en session ou en requête.
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
41protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //On recupere la session precedente HttpSession session = request.getSession(true); Rds rds = new Rds(); rds=(Rds)request.getAttribute("rds"); rds.affiche(); (int)Integer.parseInt(request.getParameter("idRds").toString()); //Lorsque appel requete Ajax if ( request.getParameter("action")!=null && request.getParameter("action").compareTo("add")==0 ) { //ajout en base Consultant consultantAdd = new Consultant ( rds.getId_rds(), request.getParameter("nom"), request.getParameter("prenom"), request.getParameter("email"), request.getParameter("client"), request.getParameter("telPort"), request.getParameter("telSec"), request.getParameter("type") ); try{ consultantAdd.setId_consultant( ConsultantSQL.addOne((Consultant)consultantAdd) ); }catch(Exception e){e.printStackTrace();} //on renvoie au jsp et on construit le <tr> String retourAjax = new String(); // {"data1":100,"data2":"hello"} retourAjax = "{'nom':"+ consultantAdd.getNom()+",'prenom':"+ consultantAdd.getPrenom()+",'email':"+ consultantAdd.getEmail()+",'client':"+ consultantAdd.getClient()+",'telPort':"+ consultantAdd.getTel_port()+",'telSec':"+ consultantAdd.getTel_sec()+",'idConsultant':"+ consultantAdd.getPrenom()+",'prenom':"+ consultantAdd.getId_consultant()+"}"; response.setContentType("text/xml"); response.setHeader("Cache-Control", "no-cache"); PrintWriter out = response.getWriter(); out.println(retourAjax); } }
Je veux pouvoir réutiliser id_rds présent dans le Rds en session, mais j'ai des nullPointerException et d'autres erreurs levées au niveau du cast de id_rds en int pour l'ajout d'un nouveau consultant
Pour finir, les fichiers js :
consultant.js
C'est encore brouillon mais JEE et Ajax/JQuery sont des notions complètement nouvelles pour moi.
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 function supprimer ( idConsultant ) { //suppression de la ligne $('#consultant_' + idConsultant).remove(); } $(document).ready(function(){ //variable pour savoir si on est en creation ou modification d'un element var CreaDialog; $('#dialogBox').dialog({ height : 500, width : 450, autoOpen : false, modal : true, }); //Fonction qui permet de gérer les retours des appels Ajax var Appel_ajax= function(url, param, callback){ $.post(url, param, function(res){ if( res.code <= 0 ){ alert('Erreur - code n° : ' + res.code); // si on veut on peu rediriger comme ca //document.location.href= "Url de la redirection"; } else { callback( res ); } }); };
J'espère que vous arriverez à y lire quelque chose.
Merci d'avance
Partager