Whalien52 ha scritto:
Qualcuno sarebbe così gentile da spiegarmi dove sto sbagliando e controllare se la sintassi per creare le combo dinamiche è giusta, per favore? Tenendo conto che frequento il quinto superiore e che ho appena iniziato a studiare jsp e servlet?
Capisco ... ma il fatto è che ci sono svariati errori e cose dubbie/discutibili.
Innanzitutto la chiamata doGet(request, response); al fondo del doGet stesso ... non ha senso. Poi l'utilizzo di sendRedirect con il necessario uso (altrimenti non "tiene" i dati, ovviamente) della sessione è un po' dubbio. Serve davvero tenere tutta quella roba in sessione? Non ho visione completa di tutto quanto ma molto probabilmente no.
Quando si usano Servlet+JSP, l'approccio tipico (e "buono") è di usare le Servlet per gestire inizialmente le request, poi si usano le JSP solo come "vista" facendo un "forward" interno ad una JSP. C'è una mia vecchia spiegazione con esempio sul forum:
https://www.iprogrammatori.it/forum-programmazione/post8529076.html#p8529076
L'esempio utilizzava JSTL (una libreria di custom-tag) nella JSP ma non è fondamentale (cioè si può usare anche solo dello "scriptlet" come stavi facendo).
Riguardo la JSP, ci sono diverse cose dubbie/errate. Quei cast sono ovviamente sbagliati. Gli oggetti in sessione sono delle liste, non un singolo elemento. Quindi come minimo:
istituti = (ArrayList<Istituti>) session.getAttribute("istituti");
(similare l'altro)
La generazione degli <option> è comunque sbagliata.
1) i < i.size() è sbagliato (
i è un
int, non ha senso i.size() )
2) <%p = i.get(i);%> qui
i ripeto che è un int, non puoi fare i.get(i)
E comunque qui stai solo assegnando ad una variabile, NON stai "emettendo" qualcosa in output nella pagina.
Anche ammesso di emettere correttamente il value, questo è solo il valore "nascosto" (l'utente NON lo vede) che può essere usato per passarlo ad un'altra request. Quello che manca è il testo che l'utente vedrebbe, che si mette DENTRO il tag <option>
<option value="123">
Testo che l'utente vede</option>
Insomma ... è tutto un po' da rivedere!
EDIT: e aggiungo, queste variabili
<%! private ArrayList<Istituti> istituti;
private ArrayList<Laboratorio> lab;
private String p;%>
sono variabili "di istanza". Ma una JSP viene trasformata in una Servlet di cui c'è (di norma) una sola istanza. Quindi queste variabili diventano in un certo senso "globali" e sono condivise tra più thread che possono eseguire la Servlet in maniera concorrente a seconda delle request. Quindi è inappropriato. Devi usare variabili
locali, non "di istanza". Quindi non devi usare <%! ...... %>