bonjour,
J'ai deux jsp. Une qui fais de l'affichage avec un tableau que nous appellerons tab.jsp. Cette première jsp appelle une seconde jsp (que nous appellerons traitement.jsp) qui ne fais pas d'affichage mais qui fais des test sur une base de données.
Dans tab.jsp, j'ai un tableau rempli avec des données issues de la base de données.
Dans cette jsp, j'ai un bouton qui ajoute une ligne au tableau, mais avant de faire l'ajout, je dois faire des test.
Disons que le type de ligne soit le suivant:
id | libellé | commentaire | date | statut
(ici, on parle d'article dans des campagnes publicitaires, donc l'id est celui d'un article, le commentaire, ce lui qui concerne un article, ...)
-je fais des test sur la validité des infos passées dans les champs de texte (est-ce une date conforme, statut est-il une lettre entre 'O','R','S' ou 'F', ...)
-je dois vérifier que la ligne que j'insère ne contienne pas le même 'id' qu'une ligne déja dans le tableau de la jsp (tab.jsp)
ça je le fais dans la jsp tab.jsp avec les composant javascript(tableau et champs texte).
-je dois tester si l'id existe déjà dans la base de données dans une autre table car je ne peux insérer que des articles qui existent dans la base.
Et ça, j'utilise pour l'instant une autre jsp (traitement.jsp).
En gros, quand je clique sur le bouton qui ajoute les articles, je lance une méthode qui fais des traitements en javascript et ensuite, je lance une requête avec XMLHttpRequest vers la seconde jsp qui s'occupe des test sur la base. la seconde s'occupe également de l'ajout dans la base de données de l'article.
Mon problème est le suivant:
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 function ajouterArticle() { variable = "2"; if(codeCampagne != null) { var codeArticle = dijit.byId("codeArticle"); var statut = dijit.byId("statutArticle"); var comm = dijit.byId("commentaireArticle"); var qte = dijit.byId("qteMinArticle"); var tabA = grid.model.data; /*alert('codeArticle pour valeur : '+codeArticle.value); alert('statut pour valeur : '+statut.value); alert('comm pour valeur : '+comm.value); alert('qte pour valeur : '+qte.value);*/ // test si le statut et la quantité sont valide if( (statut.isValid() == true) && ( (qte.isInRange() == true) || (qte == "") ) ) { // test si l'article tapé est déjà dans la campagne // initialisation à false = n'est pas dans la campagne var bool = false; for(var i = 0; i < tabA.length; i++) { if(codeArticle.value == (tabA[i][2])) bool = true; } if(bool == false) { var xhr = getXhr() // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ // On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState == 4 && xhr.status == 200){ // alert(xhr.responseText); //document.getElementById("resultAjoutArticle").innerHTML = xhr.responseText; variable = xhr.responseText; } } var url = "addArticle.jsp?codeArticle=" + codeArticle.value + "&statut=" + statut.value + "&commentaire=" + comm.value + "&qte=" + qte.value + "&codeCampagne=" + codeCampagne+"&variable="+variable; //var url = "AddArticle.do"; //alert("url = " + url); xhr.open("GET", url, true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send(null); // FIN DES TESTS DANS LA SECONDE JSP // COMMENT JE SAIS CE QU'IL S'EST PASSE } else { alert("Cet article existe déjà dans cette campagne."); } } else { alert("Erreur dans les champs saisies."); } } else alert("Veuillez sélectionner une campagne."); }
Une fois que le traitement dans la seconde jsp est terminé, je reviens dans le code de la première. C'est à ce moment que je dois ajouter la ligne dans le tableau javascript. Comment je sais ce qu'il s'est passé, si les tests sont positifs ou négatifs dans traitement.jsp, pour savoir si j'ajoute ou non dans le tableau javascript?
J'avais pensé à retourner un boolean par exemple (true si je peux ajouter et false sinon) mais je ne réussi pas à envoyer une variable ou des paramètres en retour (de traitement.jsp vers tab.jsp).
Si ma méthode est toute naze, dite le moi, si il y a une autre solution plus 'propre' aussi.
merci.
Partager