questa è la parte del codice di visualizzazione della prima select
codice:
<select id="idcategoria" name="idcategoria" onchange="javascript:visualizzaselect(<%=numero%>)">
<option value="0" selected="selected">Select category</option>
<% for(Categoria c : DBcategorie.getCategorieFiglie(0)){ //sul click prendo il valore e visualizzo le sottocategorie.
%>
<option value="<%=c.getIdcategoria()%>"><%=c.getNome()%></option> <%}%>
</select>
<div id="idcategoria<%=numero%>"/>
questa è la funzione nel file .js
codice:
function visualizzaselect(numeroid){ //chiamo il metodo della servlet
$("select#idcategoria").change(function(){
// gestore evento change della select
//prendo il valore della select
var input = $(this) ;
$("div#idcategoria"+numeroid).load("selectcascata?idcategoria="+input.val(), null,function(){}) ; }) ; }
$(document).ready(visualizzaselect($("selec#idcategoria").val()));
e infine la servlet che scrive l'html
codice:
//prendere il valore della select, che sappiamo essere l'id di una categoria
int id = Integer.parseInt(request.getParameter("idcategoria"));
//controllo se esiste già dbcategorie se no lo creo
DatabaseCategorie DBcategorie=(DatabaseCategorie)getServletContext().getAttribute("DBcategorie"); if(DBcategorie==null){
DBcategorie = new DatabaseCategorie(); getServletContext().setAttribute("DBcategorie", DBcategorie); }
if(id!=0){
if(DBcategorie.getCategorieFiglie(id).size()>0){
int numero = DBcategorie.getCategorieFiglie(id).get(0).getIdcategoria(); out.print("
");
out.print("<select name='idcategoria' id='idcategoria' onchange='javascript:visualizzaselect("+numero+")'>");
out.print("<option value='0' selected='selected'>Select category </option>"); for(Categoria c : DBcategorie.getCategorieFiglie(id)){
out.println("<option value='"+c.getIdcategoria()+"'>"+c.getNome()+"</option>"); }
out.print("</select>");
out.print("</p>");
out.print("<div id='idcategoria"+numero+"'/>"); } }