[JSP] Problème avec un onClick

Résolu/Fermé
Cotontige Messages postés 3 Date d'inscription mercredi 27 février 2008 Statut Membre Dernière intervention 27 février 2008 - 27 févr. 2008 à 15:48
 sousou - 5 juin 2008 à 16:41
Bonjour,

je suis actuellement entrain de développer un site web en JSP. Mon problème se situe au niveau d'une page demandant une confirmation avant de supprimer des données.

Cette page est composée d'un formulaire comprenant deux bouton de type 'submit'.
Voici mon code :

<%

out.println("Etes vous sûre de vouloir vider ce 'qui fait quoi' ?");

%>

<form method='post' action="displayWDW.jsp?class=<% out.println(request.getParameter("class") + "&moment=" + request.getParameter("moment")); %>">

<jsp:useBean id='WhoDoesWhat' class='beans.Who_does_what' scope='page' />

<input type='submit' value='Oui' onclick="<% WhoDoesWhat.empty(request.getParameter("class"), Integer.parseInt(request.getParameter("idmoment"))); %>" />

<input type='submit' value='Non' />

</form>

La méthode qui se trouve dans le 'onClick' du bouton 'Oui' est appelée au chargement de la page, donc sans même que l'utilisateur ne clique dessus. Cette méthode supprime les données dans la base de données, ce qui est gênant lorsqu'on ne veut pas le faire :p

Je ne comprend vraiment pas pourquoi, et je bloque la-dessus depuis quelques heures => à s'en arracher les cheveux !

Merci d'avance pour votre aide ;)

4 réponses

en fait c'est un peu plus compliqué car ton code jsp est interpréter par le serveur alors que ta page html avec le javascript se situe en local. Tu ne peux donc pas appeler directement la fonction. Il faut que ton appel WhoDoesWhat.empty soit dans une page jsp et dans ta fonction javascript, tu vas envoyer une requete à cette page.
function appeljsp(){
if (window.XMLHttpRequest) {
httpRequest = new XMLHttpRequest();

}
else if (window.ActiveXObject) {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
if (!httpRequest) {
alert('Abandon :Impossible de créer une instance XMLHTTP');
return false;
}

httpRequest.onreadystatechange = function() {

}
httpRequest.open("GET", "mypage.jsp?idmoment=<%=request.getParameter("idmoment")%>", false);
httpRequest.send(null);

}

et dans ta page jsp mypage.jsp tu as juste:
<% WhoDoesWhat.empty(request.getParameter("class"), Integer.parseInt(request.getParameter("idmoment"))); %>

et onclick="appeljsp()" dans ton formulaire html
Voila. J'ai écris à partir d'un copier coller d'une de mes pages et changer des infos dedans surtout le nom de l'url, donc peut y avoir des erreurs.
1
Cotontige Messages postés 3 Date d'inscription mercredi 27 février 2008 Statut Membre Dernière intervention 27 février 2008
27 févr. 2008 à 17:12
Ok,

merci beaucoup pour ton aide ;)

Je vais essayer comme ça :)
0
Salut. C'est normal,dans onclick="<% WhoDoesWhat.empty(request.getParameter("class"), Integer.parseInt(request.getParameter("idmoment"))); %>" WhoDoesWhat.empty est une méthode jsp et non une fonction javascript. Elle est donc exécutée par le serveur lors de la création de ta page comme le reste de ton code jsp. onclick="<% WhoDoesWhat.empty(request.getParameter("class"), Integer.parseInt(request.getParameter("idmoment"))); %>".
Il faut que ton on click appelle une fonction javascript, et ce sera dans celle-ci que tu appeleras ta méthode WhoDoesWhat.empty.
0
Cotontige Messages postés 3 Date d'inscription mercredi 27 février 2008 Statut Membre Dernière intervention 27 février 2008
27 févr. 2008 à 16:49
Ok,

merci de ta réponse, je pensais qu'on pouvait appeler des fonctions JAVA également.
Je ne connais pas bien le JAVAScript, quelqu'un pourrait m'indiquer comment le faire svp ?

Merci d'avance,
Cotontige
-1
ah oui juste une dernière chose: tu peux mettre dans le open la valeur à true du dernier paramètre, ça veut dire que ta page n'attendra pas la réponse du serveur pour continuer(c'est le mode asynchrone).
0
svp j ai un probleme de comment on peux programmer dans une page jsp c à d la création des methode d'ajout de suppression selection dans une page jsp et non pas une servlet on utilisant hibernate et merci d avance
0