Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/04/2010, 19:38
avo_liao
 
Fecha de Ingreso: abril-2010
Mensajes: 1
Antigüedad: 14 años, 10 meses
Puntos: 0
combos dependientes usando jsp y struts 2

Hola a todos,

Espero puedan ayudarme con este problema. Lo he buscado en la Web pero parece que las tecnologías descritas no se aplican a mi caso. Quisiera saber si es posible cargar un combobox a partir de otro (obteniendo los datos de una BD) usando Struts2 y jsp.

Si no es posible, ¿Otra opción es usando Ajax y Struts2? Si es así, ¿tienen códigos de ejemplo?

En realidad, no he podido lograr nada con Struts así que traté de jugar con javascript. Acá está mi código pero puede que no sea tan claro


En mi jsp tengo 2 combos. Uno con struts y el otro no
Código:
<table><tr><td><s:select name="cbxProyecto" headerKey="-1" list="listaProyectos" listValue="strNombre" listKey="{intIdProyecto}" onchange="populate(this,actividades_valores,actividades_valorespadre,actividades_nombres)"></s:select></td></tr></table></td>
                <td><table><tr><td><select name="ComboActividades" id="ComboActividades"></select></td></tr></table></td>
Luego en el javascript defino mi función populate llamada con onChange
Código:
function populate(o,actividades_valores,actividades_valorespadre,actividades_nombres) {
          var valor_padre=o.options[o.selectedIndex].value;
          if(!valor_padre){return;}
          var hijo=document.getElementById('ComboActividades');
          if(!hijo){return;}
          hijo.options.length=0;
          var indice=0;

          for(var i=0;i<actividades_valorespadre.length;i++) {
            if (actividades_valorespadre[i]==valor_padre)
                  {
                    indice=indice+1;
                  }
          }

          hijo.options.length=indice;
          indice=0;

          for(var z=0;z<actividades_valorespadre.length;z++) {
            if (actividades_valorespadre[z]==valor_padre)
                  {
                    hijo.options[indice].text=actividades_nombres[z];
                    hijo.options[indice].value=actividades_valores[z];
                    indice=indice+1;
                  }
          }

        }
Esto no funciona. La razón es que los arreglos (ArrayList) "actividades_valores,actividades_valorespadre y actividades_nombres" se definen en el action (clase java) pero el javascript no los recibe.

¿Alguna otra forma de hacer esto con Struts 2 y jsp? ¿Estoy por el buen camino?

Muchas gracias de antemano