Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [JSP]JSP con select

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86

    [JSP]JSP con select

    Ciao a tutti,
    sto scrivendo una JSP con una combo box per selezionare la
    regione, una per la provincia e una per il comune
    Nella JSP scrivo il form

    <form method="get" action="<%= request.getContextPath() %>/provincie">
    <table border"0" align="center" width="350">
    <h2>Cerca il Comune</h2>
    <tr>
    <td>REGIONE</td>
    <td>
    <select name="Regioni">
    <option>Seleziona la regione</option>
    <% for(int i=0; i<risultato.size(); i++){%>
    <option value="<%= risultato.get(i)%>"><%= risultato.get(i) %></option>
    <% }%>
    </select>
    </td>
    </tr>

    risultato è una Arraylist che popolo eseguendo una query su una tabella i cui
    records sono le occorrenze del campo Region_Names

    e poi il form

    <form method="get" >
    <table border"0" align="center" width="350">
    <tr>
    <td>PROVINCIA</td>
    <td>
    <select name="Provincie">
    <option>Seleziona la provincia</option>
    <% for(int i=0; i<sceltaProvincia.size(); i++){%>
    <option value="<%= sceltaProvincia.get(i)%>"><%= sceltaProvincia.get(i) %></option>
    <% }%>
    </select>
    </td>
    </tr>


    Nel primo form richiamo una servlet nella quale il metodo doGet
    esegue una query e popola un-altra ArrayList con i nomi delle province.

    Ottengo le province da un-altra tabella in cui le province sono i records del
    campo Province_Names

    Nella servlet scrivo:

    request.setAttribute("scelta", risultato);
    response.sendRedirect("RegioniProvincieComuni.jsp? regione="+regione);

    e nella JSP:

    sceltaProvincia = (ArrayList)request.getAttribute("scelta");

    Ma non visualizzo la seconda combo
    Se faccio il debug per sceltaProvincia il vettore mi risulta nullo

    Chi mi può aiutare?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86

    Un'altra JSP?

    Scrivo il codice

    sceltaProvincia = (ArrayList)request.getAttribute("scelta");

    poi richiamo la servlet.

    Il metodo doGet(HttpServletRequest request, HttpServletResponse
    response)
    fa la connessione al database, istanzia un EJB.

    L'EJB esegue la query e popola un Arraylist.
    La servlet indirizza il risultatoalla stessa JSP popolando un'altra
    tendina con gli elementi dellì' Arraylist(o almeno dovrebbe).

    Qual è l'errore?
    Sarebbe meglio indirizzare il risultato a un'altra JSP?

    Come posso utilizzare il comando Javascript onChange?

  3. #3
    Per questo tipo di problemi ti consiglio di dare uno sguardo ad AJAX, ci sono molti esempi in giro che risolvono proprio questa situazione.
    Al mio segnale... scatenate l'inferno!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86

    Risolto

    Il problema era il sendRedirect nella Servlet.

    L'ho risolto scrivendo tutto il codice nella JSP.
    Ecco la JSP:



    <%@page language="java" %>
    <%@page import="it.sian.utility.ConnessioneDB" %>
    <%@page import="java.util.ArrayList" %>
    <%@page import="it.sian.bean.RegioniBean" %>

    <%
    //cdBean è un oggetto della classe per la connessione al DB(ConnessioneDB)
    ConnessioneDB cdBean = new ConnessioneDB();
    String url = "jdbcracle:thin:@myUrl";
    String username = "user";
    String password = "pass";

    //eseguo la query per la prima combo box con i nomi delle regioni
    String queryRegioni = "select a.CODI_REGI, a.DENO_REGI " +
    " from zae0regi_viw a";
    ArrayList risultato = cdBean.risultatoSuArrayList(url, username, password, queryRegioni);
    ArrayList risultatoProvincie = null;
    ArrayList risultatoComuni = null;
    if (request.getParameter("Regioni")!= null){

    // eseguo la query per i nomi delle province
    String regione = request.getParameter("Regioni") ;
    String queryProvincie = " select b.codice, b.descrizione" +
    " from nome_tabella b " +
    " where b.codice="+regione ;

    //risultatoSuArrayList è un metodo che poplola un ArrayList con dei
    //bean settando i valori con un ciclo while nella classe ConnessioneDB
    //con il codice and description
    risultatoProvincie = cdBean.risultatoSuArrayList(url, username, password, queryProvincie);
    }

    if (request.getParameter("Provincie")!= null){
    String provincia = request.getParameter("Provincie");

    // eseguo la query per i comuni
    String queryComuni = " select c.codice, c.descrizione" +
    " from nometabella2 c " +
    " where c.CODICE="+provincia;

    //popola l'ArrayList eseguendo il metoodo della classe ConnessioneDb
    risultatoComuni = cdBean.risultatoSuArrayList(url, username, password, queryComuni);
    }

    %>
    <html>
    <head>
    <link rel="stylesheet" type="text/css" href="<%= request.getContextPath() %>/css/newsianblu.css">
    <title>Regioni Provincie e Comuni</title>
    </head>
    <body>

    <form method="get" name="mioform" action="<%= request.getContextPath() %>/regioni.jsp" >
    <table border"0" align="center" width="350">

    Cerca il Comune
    <tr>
    <td>REGIONE</td>
    <td><select name="Regioni" onchange="document.mioform.submit();">
    <option>Seleziona la regione</option>
    <% for(int i=0; i<risultato.size(); i++){%>
    <option value="<%= ((RegioniBean)risultato.get(i)).getCodice()%>" <%= ((RegioniBean)risultato.get(i)).getCodice().equals (request.getParameter("Regioni"))?"selected":""%> ><%= ((RegioniBean)risultato.get(i)).getDescrizione() %></option>
    <% }%>
    </select>
    </td>
    </tr>

    <tr>
    <td>PROVINCIA</td>
    <td><select name="Provincie" onchange="document.mioform.submit();">
    <option>Seleziona la provincia</option>
    <% if(risultatoProvincie!=null)
    for(int i=0; i<risultatoProvincie.size(); i++){%>
    <option value="<%= ((RegioniBean)risultatoProvincie.get(i)).getCodice ()%>"<%=((RegioniBean)risultatoProvincie.get(i)).g etCodice().equals(request.getParameter("Provincie" ))?"selected":""%> ><%=((RegioniBean)risultatoProvincie.get(i)).getDe scrizione()%></option>
    <% }%>
    </select>
    </tr>

    <tr>
    <td>COMUNE</td>
    <td><select name="Comuni">
    <option>Seleziona il comune</option>
    <% if(risultatoComuni!=null)
    for(int i=0; i<risultatoComuni.size(); i++){%>
    <option value="<%= ((RegioniBean)risultatoComuni.get(i)).getCodice()% >" <%= ((RegioniBean)risultatoComuni.get(i)).getCodice(). equals(request.getParameter("Comuni"))?"selected": ""%> ><%= ((RegioniBean)risultatoComuni.get(i)).getDescrizio ne() %></option>
    <% }%>
    </select>
    </tr>
    </table>
    </body>
    </html>

    Il risultato è una JSP con tre combo: quando seleziono la scelta della prima combo rimane selezionata se il value della scelta esiste nella seconda query, poi seleziono la scelta nella seconda combo e così via..

    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.