Partage
  • Partager sur Facebook
  • Partager sur Twitter

listes déroulantes liés jsp/javascript

    16 août 2011 à 14:57:27

    Bonjour,

    je développe une application web J2EE.
    dans ma JSP Je souhaite créer deux liste déroulante (classe et attribut) tel que la liste des attribut ne peut être rempli que si je récupéré la valeur de l'élément sélectionné dans la liste des classe.
    Sachant que la méthode pour récupérer les attributs est en java getAttribute(string idClass).
    Ma question est donc est ce que je peux utiliser cette méthode dans ma fonction javascript?
    si oui, comment faut-il faire? sinon y a t'il un autre moyen?

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      16 août 2011 à 15:24:06

      Salut, pour faire simple tu peut ecrire dans ta jsp :

      <script type="text/javascript">
      <% String variable = "valeur"; %>
      ...
      var maVariable = <%=variable %>
      ...
      </script>
      
      • Partager sur Facebook
      • Partager sur Twitter
        16 août 2011 à 19:10:08

        Si le contenu de la seconde liste déroulante doit changer en cours de route selon la valeur prise par la première liste déroulante, je te conseille de te tourner vers AJAX.
        Mais tu peux aussi te débrouiller sans, en écrivant du javascript à partir de java.
        • Partager sur Facebook
        • Partager sur Twitter
          17 août 2011 à 14:05:59

          Merci pour vos réponse,

          Mais a vrai dire ca ne m'aide pas beaucoup :( .
          Est ce que tu peux m'expliquer plus comment écrire du javascript a partir du java.

          En faite moi la valeur que je vais récupérer avec le javascript est celle que je vais utiliser dans ma méthode java getAttribute(string idClass).

          Merci.
          • Partager sur Facebook
          • Partager sur Twitter
            17 août 2011 à 14:13:19

            Je n'ai jamais fait de java mais pour écrire du JS avec tes variables Java de base, @ninlock t'as montré un exemple ^^.
            • Partager sur Facebook
            • Partager sur Twitter
            Mon Twitter : @Amatewasu
              17 août 2011 à 14:20:31

              Ton getAttribute(), c'est quoi une methode de request?
              Il me manque un morceau pour comprendre ce que tu veut faire.
              As-tu une action qui prépare tes données, ou les prépare-tu directement dans ta jsp?
              • Partager sur Facebook
              • Partager sur Twitter
                17 août 2011 à 15:01:43

                tout se passe dans ma jsp. j'importe la classe et je récupère les méthodes dont getAttribute().

                <% ...
                // ontClass la liste des classes
                List<Attribute> attList = ontClass[i].getAttributes();
                ...
                %>
                
                • Partager sur Facebook
                • Partager sur Twitter
                  17 août 2011 à 15:03:49

                  donc je t'ai répondu comment le faire, non ?
                  Sinon montre ce que tu as à manipuler et ce que tu veut faire exactement, on pourra peut être te donner plus de détail.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 août 2011 à 15:20:35

                    <% 
                    ...
                    // ma liste de classe
                    List<Classe> ontClass = os.listOntClasses(l.get(i).getUri());
                    %>
                    
                    <-- Liste déroulante des classe
                    <select name="classId" id="classId" onchange="showSelected()" >
                    
                               <%
                                    for (int i=0; i<ontClass.size(); i++) {                                                                         
                               %>
                    
                                  <option  value="<%= ontClass.get(i)%>"> <%= ontClass.get(i)%> </option>
                              <%
                                 }
                             %>
                    </select>
                    
                    // et la je dois récupérer l'indice de l'élément sélectionné dans la liste des classe 
                    // construire ma liste d'attribut avec List<Attribute> attList = ontClass[i].getAttributes();
                    // afficher la liste deroulante des attributs
                    
                    <select name="AttributId" id="attributId">
                    
                               <%
                                    for (int i=0; i<attList.size(); i++) {                                                                         
                               %>
                    
                                  <option  value="<%= attList.get(i)%>"> <%= attList.get(i)%> </option>
                              <%
                                 }
                             %>
                    </select>
                    


                    si vous avez une idée comment faire n'hésitez pas

                    Merci
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 août 2011 à 15:48:28

                      Si j'ai bien compris tu veut afficher une liste de classe, et on va dire que par defaut t'as aucune classe de selectionné et que donc ta liste d'attribut est vide. Et une fois que la page est chargée, alors tu mat a jour la liste déroulante des attributs correspondant a la classe.
                      T'as plusieurs manière de faire.
                      solution 1, pas très élégante :
                      tu fait une liste de déroulante(select) d'attribut pour chaque classe dans la première liste, puis en javascript tu affiche la bonne liste sur un onchange de la classe et tu cache les autres.

                      Solution2 :
                      tu rappelle ta jsp sur le onchange de ton select de classe, en passant en parametre cette classe choisi et tu affiche donc après ce rappel les attribut correspondant avec la bonne option de classe checker.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 août 2011 à 11:41:13

                        Merci pour ton aide


                        je vais t'embeter encore un peu. t'aurais pas un exemple de la deuxième solution?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 août 2011 à 13:49:53

                          Donc, je t'écrit un exemple de ce que ça peut donner, par contre je ne l'ai pas testé, mais ça devrait ce rapprocher de la solution.
                          Considérons que tu as l'objet Classe qui contient une liste de nom d'attribut en String (après t'adapte à tes besoins) que tu recupere avec getAttributeList et un name qui est une propriété de Classe.

                          <% 
                          ...
                          List<String> ontClass = os.listOntClasses(l.get(i).getUri());
                          %>
                          
                          
                          <script type="text/javascript">
                          function showSelected(element){
                            var classValue = element.options[element.selectedIndex].value;
                            window.location.href = 'urlDeJsp?classValue='+classValue;
                          }
                          
                          </script>
                          .
                          .
                          .
                          <% 
                          String classeTextSelect = request.getParameter("classValue");
                          Classe classeSelected = null
                          String selectedText = "";
                          List attList = new ArrayList();
                          for (int i=0; i<ontClass.size(); i++) { 
                          //si ontClass.get(i) est de type String
                             if(classSelect.equals(ontClass.get(i).name)){
                                selectedText = "selected";
                                classeSelected = ontClass.get(i);
                             }
                          %>
                             <option  value="<%= ontClass.get(i)%>" <%=selectedText %> > <%= ontClass.get(i)%> </option>
                          <% } %>
                          
                          <select name="AttributId" id="attributId">
                          <% 
                          if(classeSelected != null){
                             for (int i=0; i<classeSelected.getAttributeList().size(); i++){%>
                                <option  value="<%= attList.get(i)%>"> <%= attList.get(i)%> </option>
                          <% } 
                          } %>
                          </select>
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 août 2011 à 14:04:09

                            Merci,
                            j'ai essayé cette solution, elle rafraichi la page et moi je cherche pas à la rafraichir
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 août 2011 à 14:51:55

                              Tu m'as demandé la solution 2, c'est ce que j'ai expliqué plus haut, après si tu veut pas de rechargement de page, t'es obligé de soit utiliser ajax, soit utiliser une frame qui contient ta 2ème selectbox.
                              Si tu veut faire de l'ajax, utilise jQuery c'est très rapide à mettre en place avec ce framework.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              listes déroulantes liés jsp/javascript

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown