Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/06/2008, 05:04
MiLLeN
 
Fecha de Ingreso: diciembre-2007
Mensajes: 194
Antigüedad: 16 años, 4 meses
Puntos: 5
Combos dependientes con J2EE.

Hola a todos, tras mucho indagar por internet, he conseguido avanzar notablemente en este mi primero contacto con AJAX, pero me he atascado en un par de pasos, y no hay manera.

1º- No consigo recibir correctamente varios parametros desde la funcion AJAX del JSP en el Servlet (que se encarga de generar una estructura XML con los datos).

2º- No consigo saber, como, una vez que el Servlet devuelve la estructura XML, puedo recuperar estos datos para insertarlos en el combo.

Aqui os dejo el codigo que tengo hasta ahora relativo a la parte conflictiva.

Funcion AJAX del JSP:
Cita:
<script language="javascript">
function rellenarCursoEscolar(opcion){
var obj = new XMLHttpRequest();
var tipoCentro = document.forms.formulario.tipoCentro.value;
var claveCentro = document.forms.formulario.claveCentro.value;
obj.open("GET", 'CfgEvalAJAXServlet.do', true);
obj.send('tipoCentro=' + tipoCentro + '&claveCentro=' + claveCentro + '&opcion=' + opcion);
obj.red cargarDatos();
}

function cargarDatos(obj){
if (obj.readyState == 4) {

}
}
</script>
DOM del JSP:
Cita:
<body>
<div align="center" style="margin-top:7px;">
<form id="formulario" name="formulario" method="post" action="CfgEvalServlet.do" target="contenido">
<label class="etiquetaOpcionesForm">Tipo Centro
<select name="tipoCentro" id="tipoCentro" size="1">
<OPTION VALUE="AD">AD</OPTION>
<OPTION VALUE="ADS">ADS</OPTION>
<OPTION VALUE="CML">CML</OPTION>
<OPTION VALUE="CMU">CMU</OPTION>
<OPTION VALUE="EMU">EMU</OPTION>
<OPTION VALUE="EOI">EOI</OPTION>
<OPTION VALUE="ESD">ESD</OPTION>
<OPTION VALUE="EXT">EXT</OPTION>
<OPTION VALUE="FIL">FIL</OPTION>
<OPTION VALUE="SEC">SEC</OPTION>
</select></label>
&nbsp;
<label class="etiquetaOpcionesForm">Clave Centro
<input type="text" name="claveCentro" id="claveCentro" onChange="javascript:rellenarCursoEscolar(1);"/></label>
&nbsp;
<label class="etiquetaOpcionesForm">Curso Escolar
<select name="cursoEscolar" id="cursoEscolar" size="1"></select></label>
&nbsp;
<label class="etiquetaOpcionesForm">
<input name="opcion" type="radio" value="1" checked="true"/>Todo</label>
&nbsp;&nbsp;&nbsp;
<input type="submit" name="Submit" value="Enviar" />
<br>
</form>
</div>
</body>
Funciones del Servlet encargado de procesar la informacion y devolver la estructura XML (hace uso de una clase DAO para el acceso a la BD).
Cita:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

//Carga de datos.
String tipoCentro = request.getParameter("tipoCentro");
String claveCentro = request.getParameter("claveCentro");
String cursoEscolar = request.getParameter("cursoEscolar");
String estudios = request.getParameter("estudios");
String ensenanza = request.getParameter("ensenanza");
String nivel1 = request.getParameter("nivel1");
String nivel2 = request.getParameter("nivel2");
String nivel3 = request.getParameter("nivel3");
String nivel4 = request.getParameter("nivel4");

//Abre conexion.
Conexion conexion = new Conexion();
conexion.conectar();

//Instancia CfgEvalDAO.
CfgEvalDAO ceDAO = new CfgEvalDAO();

//Segun la opcion...
switch (Integer.parseInt((String) request.getParameter("opcion"))) {
case 1: //Crea XML para el combo "cursoEscolar";
String[] ce = ceDAO.devuelveDatosCursoEscolar(conexion.miConex() , tipoCentro, claveCentro);
imprimeXML(out, ce);
break;
}
//Cargar Curso_Escolar.

}

private void imprimeXML(PrintWriter out, String[] datos) {
out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");

out.print("<xml>");
for (int pos = 0; pos < datos.length; pos++) {
out.print("<curso>");
out.print(datos[pos]);
out.print("</curso>");
}
out.print("</xml>");
}
Un saludo, y muchas gracias a todos.