2017-03-17 4 views
0

Je souhaite ajouter un élément à un panier uniquement lorsque l'utilisateur clique sur "ajouter au panier", mais chaque fois que j'actualise la page, il l'ajoute à nouveau.Fonction JSP exécutée chaque fois que la page est actualisée

Voici mon code qui ajoute l'élément au panier

<% 
    String empty = request.getParameter("emptyBasket"); 
    if (empty!=null) { 
     basket.clearBasket(); 
    } 

    String item = request.getParameter("addItem"); %> 

<script> 
    window.onload = function(){ 
     if(localStorage.getItem("notFirstTime") == null) { 
      <% basket.addItem(item); %> 
      localStorage.setItem("notFirstTime", true); 
     } 
    } 
</script> 

<html> 
<body> .... 

Comme vous pouvez le voir, je l'ai essayé d'utiliser la méthode de window.onload mais il ne fonctionne pas pour une raison quelconque. Faites-moi savoir si vous avez besoin de voir plus de code et je vais mettre à jour.

Merci

+0

Je pense que vous devriez avoir une meilleure compréhension du fonctionnement des pages 'JSP'. Tout le code 'Java' sur ces pages est compilé et exécuté avant que la page soit chargée et convertie en code' HTML', 'JavaScript' ou' CSS' ce qui signifie que '<% basket.addItem (item); %> 'sera toujours exécuté. – Titus

Répondre

1

JSP s'exécute sur le serveur. JavaScript s'exécute sur le navigateur. Le code côté serveur s'exécute d'abord sur le serveur pour générer la page. Ensuite, il l'envoie sur le réseau au navigateur où il exécute JavaScript. basket.addItem(item) sera toujours exécuté dans le cadre du processus de génération de page, car il est le code côté serveur.

Vous pourriez vouloir considérer les cookies (pour les utilisateurs anonymes) ou le DB (pour les utilisateurs authentifiés) pour le stockage de ces valeurs.

+0

je vous remercie pour votre réponse, comment pourriez-vous me suggérer de le faire à la place? –

+0

@JamesMcCutcheon Les cookies sont couramment utilisés pour cette tâche, en particulier si l'utilisateur est anonyme. Si cette opération est effectuée par un utilisateur authentifié, vous pouvez simplement utiliser la base de données. – Joseph