Popolare ComboBox da pagine JSP

di il
6 risposte

Popolare ComboBox da pagine JSP

Ciao a tutti,
premetto che sono alle prime armi con JSP/Servlet
Ho una servlet che effettua una query su una tabella del mio database
e vorrei utilizzare il risultato per popolare una combobox presente in
una pagina JSP
Come posso fare?
Ho cercato in rete ma non sono riuscito a trovare quello che volevo
dato che ho visto molto codice Javascript
Grazie anticipatamente

6 Risposte

  • Re: Popolare ComboBox da pagine JSP

    Rosanero4Ever ha scritto:


    Ciao a tutti,
    premetto che sono alle prime armi con JSP/Servlet
    Ho una servlet che effettua una query su una tabella del mio database
    e vorrei utilizzare il risultato per popolare una combobox presente in
    una pagina JSP
    Come posso fare?
    Ho cercato in rete ma non sono riuscito a trovare quello che volevo
    dato che ho visto molto codice Javascript
    Grazie anticipatamente
    Ciao,
    nella servlet avrai:
    
      List<String> lista = new ArrayList<String>();
    		
      //si cicla il ResulSet per popolare la lista
      for(...){
    	lista.add("");
      }
    		
      // si mette la lista in sessione
      session.setAttribute("LaMiaLista",lista);
    

    nella JSP avrai:
    
    <%
    	List<String> lista = (ArrayList<String>)session.getAttribute("LaMiaLista");
    %>
    
    <select id="lista" name="lista">		
      <option value="">- Seleziona -</option>	
    	<%
    	for(int x=0;x<lista.size();x++){			  
    	%> 							 								 	
      <option value="<%=x%>"><%= lista.get(x)%></option>
    	<%
    	} 
    	%>
    	</select>
    
  • Re: Popolare ComboBox da pagine JSP

    Ti ringrazio per la risposta
    Se volessi richiamare la servlet al clic del mouse sulla combo, usando quindi Javascript, come potrei fare?
    <select onchange=" ?????????
    Grazie ancora!
  • Re: Popolare ComboBox da pagine JSP

    Ho comunque difficoltà col codice che mi hai suggerito poichè non riesco a chiamare la servlet e quindi a reperire la lista di valori

    Il codice della servlet è:
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		SessionFactory sf = new Configuration().configure().buildSessionFactory();
    		Session s = sf.openSession();
    		/**************************************************************
                              QUERY CON HIBERNATE
                   ****************************************************************/    
                    String query = "select utente from utenti where utente = 'user'";
    		Query q = s.createQuery(query);
    		/**************************************************************/
    		List<String> l = new ArrayList<String>();
    		
    		l = (List<String>)q.list();
    		
    		HttpSession session = request.getSession(true);
    		
    		session.setAttribute("results", l);
    		
    	}
    
    
    Mentre nella pagina JSP ho:
    
    <body>
    <%   
       List<String> lista = (ArrayList<String>)session.getAttribute("results");
    %>
    
    <select id="lista" name="lista">      
      <option value="">- Seleziona -</option>   
       <%   for(int x=0;x<lista.size();x++){  %>                                                   
         <option value="<%=x%>"><%= lista.get(x)%></option>
       <%
         }
       %>
      </select>
    </body>
    
    
    L'errore che viene mostrato è:
    
    GRAVE: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    	at org.apache.jsp.index_jsp._jspService(index_jsp.java:68)
    
    Come lego la pagina alla servlet senza il classico bottone Submit? Come detto prima, ho pensato ad un evento Javascript....ma come si fa?
  • Re: Popolare ComboBox da pagine JSP

    Potresti fare così per la jsp.
    E nella Servlet una volta che hai fatto la query, richiamare di nuovo la jsp.
    
    <body>
        <%   
           List<String> lista = (ArrayList<String>)session.getAttribute("results");
           if(lista==null)
              lista = new ArrayList<String>();
        %>
    
        <select id="lista" name="lista">     
          <option value="">- Seleziona -</option>   
           <%   for(int x=0;x<lista.size();x++){  %>                                                   
             <option value="<%=x%>"><%= lista.get(x)%></option>
           <%
             }
           %>
          </select>
    
          <br>
          <a href="nomedellaServlet">chiama servlet</a>
        </body>
    
  • Re: Popolare ComboBox da pagine JSP

    Beh...adesso funziona, ma non è granchè come impatto dato che all'avvio la combo è vuota e solo dopo aver cliccato sul link che esegue la servlet si ottine la pagina JSP con la combo che presenta dei valori.
    La soluzione in questi casi potrebbe essere AJAX e nient'altro?
  • Re: Popolare ComboBox da pagine JSP

    Ciao, per far comparire la lista popolata, dovresti chiamare prima la servlet, che richiama la jsp....
Devi accedere o registrarti per scrivere nel forum
6 risposte