2009-07-31 9 views
0

Je travaille dans une application web très simple et petite, c'est un jsp qui gère un panier. Ce que je fais à ce stade est de parcourir tous les produits qui sont stockés dans la voiture et les ajouter un par un à la jsp à chaque itération.Comment obtenir une valeur personnalisée à partir du champ de texte dans JSP?

C'est le code qui ajoute une ligne à la jsp à chaque itération:

  <tr>   
      <td> 
       <input type=text name=Quantity value=<%=quantity%>> 
      </td> 
      <td> 
       <input type=text name=id value=<%=id%>>     
      </td> 
      <td> 
       <input type=submit value="Delete" onclick=<%CustomSubmit(request, id); %>> 
      </td> 
     </tr> 

Comme vous pouvez le voir ajouter à la fin de chaque ligne un submit contrôle de type avec une méthode personnalisée pour le traitement des événements Click , l'utilisation de ce contrôle consiste à retirer de la voiture le produit correspondant. Le problème que j'ai est que lorsque je clique dans le bouton de suppression d'un produit, l'identifiant qui est passé à la méthode CustomSubmit (...) n'est pas l'identifiant du produit que j'essaie de supprimer mais l'identifiant du dernier produit ajouté à la jsp. Donc, ma question est de savoir comment puis-je obtenir le bon identifiant de l'article que j'essaie de supprimer?

+0

Comment itérez-vous chaque article dans le panier? –

+0

Je les ai dans une ArrayList() contenue dans un Java Bean situé dans la portée de la session. – Vic

Répondre

1

La façon dont je l'utilise pour le faire est la suivante:

Remplacer

<input type=submit with a button 
<input type="button" value="Delete" onclick="deleteIt('yourid');" /> 

ajouter la deleteIt fonction javascript dans la fonction que vous remplissez un champ caché avec l'id. ensuite soumettre la page et l'ID correct est transmis à votre page

Petite note est toujours prudent d'échapper à toutes vos cordes

dont use <input type=submit but use <input type="submit" 

peut-être comme

<td> 
<input type="text" name="id" value="<%=id%>"> 
    </td> 
<td> 
<input type="button" value="Delete" onclick="deleteItem('<%=id%>')"> 
</td> 
+0

Merci pour le sidenote, je vais le faire, maintenant à propos de ce que vous suggérez, je comprends la partie de la fonction javascript, mais comment faire pour obtenir la variable 'yourid', car j'ajoute dynamiquement des lignes, et je ne sais pas qui est l'id du produit que l'utilisateur veut enlever, l'id est contenu dans une colonne de la rangée, mais je ne sais pas comment l'obtenir ... – Vic

1

Je suppose que votre panier est liste d'objets, chacun ayant l'identifiant et la quantité d'attributs. Je vous attendre code pour ressembler à ceci (en notant la réponse de Pierre sur l'utilisation d'un « bouton »): paramètre

<input type="button" value="Delete" onclick="CustomSubmit('<%=cartItem.id%>');"/> 

Je ne suis pas tout à fait sûr de ce que vous essayez de faire avec la « demande » dans votre code original mais si c'est la requête HTTP tout ce que vous obtiendrez lorsque vous essaierez de l'écrire dans la JSP est le résultat de la méthode request.toString.

+0

bien, en fait vous pouvez juste ignorer le paramètre de demande, n'est pas important en ce moment; et c'est exactement comme vous le dites, c'est exactement comme ça que je travaille, mais le problème est que lorsque l'événement est déclenché et que le code "CustomSubmit ('<% = cartItem.id%>')" est exécuté, 't obtenir le "cartItem.id" de l'élément que je veux supprimer, je reçois le "cartItem.id" du dernier élément ajouté à la jsp.Une solution pourrait être essayer d'obtenir le "cartItem" de la liste, mais pour ce faire, j'ai besoin de connaître le numéro de ligne de l'élément que je veux supprimer et je ne sais pas non plus comment obtenir le numéro de ligne – Vic

+0

Lorsque vous regardez la source de la page dans le navigateur, chaque ligne de la table a-t-elle le même identifiant? Si c'est le cas, le problème n'est pas avec ce code, c'est soit avec la logique d'itération, soit avec l'objet item du chariot. Si ce n'est pas le cas, il y a quelque chose avec votre JavaScript et il est temps de cracker Firebug et de regarder ce qui se passe. –

Questions connexes