2010-07-21 8 views
1

J'ai des difficultés avec deux listes déroulantes liées dont la liste déroulante 1 récupérera les valeurs de la BD et en fonction de la sélection de l'utilisateur, elle ira chercher les enregistrements concernés dans la liste déroulante 2.JSP: liste déroulante 2 dépend de la liste déroulante 1

J'ai essayé de le faire dans mon jsp avec ce code, mais cela n'a pas fonctionné et beaucoup de gens ont conseillé d'utiliser javascript. En fait, je ne sais pas beaucoup plus Abot JS, vous aussi me aider s'il vous plaît

<select size="1" name="shop_category"><option value="NONE"> 
<% 
      try 
      { 
          ResultSet rs=null; 
          Statement st1=null; 
          String query = "select Category_name, category_id from shop_category_lkup"; 
          st1 = conn1.createStatement(); 
          rs = st1.executeQuery(query); 
          while(rs.next())     
      { 
     String sz_Selected=""; 
      if (rs.getString("category_id").equals(shop_category)) 
      { 
       sz_Selected = "selected"; 
      } 
%> 
      <option value="<%=rs.getString("category_id")%>" <%=sz_Selected%>> 
    <%=rs.getString("category_name")%></option> 
<% 
          } 
      } 
      catch (Exception e) { 
    e.printStackTrace(); 
} 
%> 
</select> 

<select size="1" name="rent_category"><option value="NONE"> 
<% 
      try 
      { 
          ResultSet rs=null; 
          Statement st1=null; 
          String query = "select r.Category_name, r.category_id from rent_category_lkup r, shop_categpry_lkup s where r.category_id=s.category_id"; 
          st1 = conn1.createStatement(); 
          rs = st1.executeQuery(query); 
          while(rs.next())     
      { 
     String sz_Selected=""; 
      if (rs.getString("category_id").equals(rent_category)) 
      { 
       sz_Selected = "selected"; 
      } 
%> 
      <option value="<%=rs.getString("category_id")%>" <%=sz_Selected%>> 
    <%=rs.getString("category_name")%></option> 
<% 
          } 
      } 
      catch (Exception e) { 
    e.printStackTrace(); 
} 
%> 
</select> 

Répondre

4

Vous faites une erreur fondamentale de supposer que le code Java présent dans les scriptlets est exécuté à la fin du client!

jetez un oeil à la lifecycle of a JSP. Après cela, vous serez dans une meilleure position pour comprendre pourquoi votre code ne fonctionne pas.
par la suite, vous devriez essayer de chercher dans Cascading Dropdown examples en utilisant AJAX.

Si tout ce qui ne vous aide pas - poster à nouveau et il sera beaucoup plus facile de vous guider à travers.

+0

Ayup.La distinction entre le code côté client et côté serveur m'a fait trébucher lorsque j'ai commencé à apprendre les JSP, aussi; Une fois que vous l'aurez compris, vous vous épargnerez beaucoup d'efforts pour trouver de mauvaises solutions dans les impasses. Si vous voulez vraiment éviter Javascript, vous devez soumettre le formulaire lorsque l'utilisateur sélectionne une option dans la liste 1 et recréer la page en fonction de cette sélection; ce qui est certainement faisable mais vous présentera beaucoup de maux de tête d'implémentation. Pour peaufiner l'affichage en fonction des choix de l'utilisateur, Javascript est le bon outil pour le travail. Apprend le. – BlairHippo

+0

Je vous remercie, je ferai de mon mieux – maas

3

Je ne suis pas d'humeur à poster une réponse étendue puisque @anirvan résume déjà parfaitement en deux mots que je ne peux pas surpasser: vous faites une erreur fondamentale. Au point: Java/JSP s'exécute sur le serveur web, génère un tas de HTML/CSS/JS et l'envoie sur le réseau depuis websserver vers webbrowser. Le navigateur Web (par exemple MSIE, Firefox, etc.) récupère et comprend HTML/CSS/JS seul et commence à l'afficher/l'appliquer/l'exécuter. Si Java/JSP a fait sa tâche correctement, vous ne devriez pas voir aucune ligne en faisant rightclick>Afficher la source dans webbrowser. La seule façon de laisser le code dans webbrowser (JavaScript) et le code dans le serveur web (Java/JSP) pour communiquer les uns avec les autres est de laisser JavaScript envoyer des requêtes HTTP et Java/JSP y répondre.

envoi des requêtes HTTP en JavaScript peut se faire de plusieurs façons:

  1. Soumettre un formulaire: document.getElementById('formId').submit(). Modifier l'emplacement de la fenêtre: window.location = 'http://www.google.com';.
  2. Tirez une requête Ajax: new XMLHttpRequest() et ainsi de suite.

est ici un groupe de « doit lire » liens pour savoir comment l'un et d'autres crises dans l'autre et comment un et l'autre devrait être utilisé:

Hmm, cette réponse est après tout un peu plus étendu que ce que je voulais dire que ce soit ... Quoi qu'il en soit, espérons que ça aide!

+0

Merci, je vais essayer de mon mieux – maas