En este mini-tutorial me gustaría mostrar, siguiendo un ejemplo, como he utilizado Ajax en una aplicación desarrollada con Struts. Antes de comenzar he de decir que he utilizado la librería JavaScript Prototype como ayuda.
Imaginemos que tenemos un formulario donde debemos introducir nuestro código postal, población y provincia y queremos que cuando el usuario introduzca el código postal, automáticamente aparezca en sus respectivas cajas de texto la población y provincia a la que pertenece ese código postal. El código del formulario sería algo parecido a lo siguiente:
<input type="text" id="codpostal" name="codpostal"/> <input type="text" id="poblacion" name="poblacion"/> <input type="text" id="provincia" name="provincia"/>
Para realizar nuestro objetivo, crearemos una funcion JavaScript que utilice Prototype para realizar una petición Ajax a una acción de Struts para hacer la búsqueda en la base de datos y que devuelva el resultado en un objeto JSON mediante el cual rellenaremos el campo población y provincia. El código de esta función sería el siguiente:
function buscaPoblacion()
{
$('poblacion').value = "Buscando...";
$('provincia').value = "Buscando...";
new Ajax.Request('<html:rewrite page="/util/buscapoblacion.do"/>', {
parameters: {codpostal: $('codpostal').value},
onComplete: function(transport, json) {
$('poblacion').value = json.poblacion;
$('provincia').value = json.provincia;
}
});
}
La acción de Struts que emplearemos para hacer la búsqueda en la base de datos utiliza la librería json-lib para crear objetos JSON. El código del método execute sería algo parecido a lo siguiente:
... String codpostal=request.getParameter("codpostal); // Realizar la búqueda en la base de datos y almacenar el resultado // en las variables provincia y población HasMap hm = new HasMap(); hm.put("poblacion",poblacion); hm.put("provincia",provincia); JSONObject json = JSONObject.fromObject(hm); response.setHeader("X-JSON", json.toString()); return mapping.findForward("completado"); ...
Al usar Struts necesitamos redirigir una acción a una página JSP. En nuestro caso no vamos a mostrar el resultado en una página JSP sino que la información JSON irá incluida en la cabecera de una página JSP en blanco. El struts-config.xml quedaría de la siguiente forma:
<action path="/util/buscapoblacion" scope="request" type="com.util.BuscaPoblacionAction" validate="false"> <forward name="completado" path="/blanco.jsp"/> </action>
Mas información:
- We Heart Code
- Abhi On Java
Bienvenido a mi rincón en la web. Mi nombre es Carlos Mayo y me dedico a eso del desarrollo web.






Hola, tienes el codigo completo del ejemplo... Esta bastante interesante y me gustaria montarlo
FRANCISCO, ME GUSTARIA SABER COMO ES EL CODIGO PARA PODER ENTENDER MAS SI PUDIERAS ENVIARME EL PROYECTO TE LO AGRADECERIA MONTON.
MI CORREO franciscp@gmail.com
DE ANTEMANO MUCHAS GRACIAS
Pienso lo mismo que el resto de compeñeros, si hicieras el favor de pasarme el código completo.... parece muy interesante y actualmente trabajo con struts.
rafarv@gmail.com
holas amigos por favor si ami tambien podrian enviarme el codgo del proyecto les estaria muy agradecido mi correo es polochepu@gmail.com
Carlos, muy bueno tu artículo.
Hay posibilidades de ver un pequeño ejemplo funcionando?, el ódigo digo...
Gracias
Daniel Calvin
Hola carlos, veo que has trabajado bastante con struts, estoy haciendo un soporte a una aplicacion que tiene struts 1 y no estan funcionando bien los formularios con IE. De casualidad tienes un proyecto de ejemplo que funcione con struts 1, uses formularios y que funcione bn en IE8. mi correo es christian_and40@hotmail.com. Mil gracias por tu ayuda.
Al intentar hacer el mismo ejemplo pero cargando el hashMap con 300 valores, el json me llega vacío en el jquery. ¿hay alguna limitación de tamaño? ¿hay algún truco para solucionarlo? muchas gracias
Buenas
Me uno a la peticion del codigo si eres tan amable, si me lo pudieras enviar a
daniel.fatico@gmail.com
saludos
ahhh ke bola de ignorantes, el ejemplo es bastante sencillo, piensenle un pokito, mas facil imposible.
Al retornar de la función java me da un error en el jsp de que el objeto json no lo reconoce ... 'json is undefined' ... vamos como si no estuviera definido y eso que está definido en la cabecera de la función .... he puesto todos los pasos y he conseguido que se redirija bien ... ¿alguien sabe porqué puede ser que en la jsp me de ese error?
Hola Carlos, me podrias enviar el codigo a sirda2003@hotmail.com
Muchas gracias
Hola, una pregunta, cuando mandas la información a la cabecera de la página en blanco ¿cómo la recuperas en el formulario original?
Muchas gracias por la página
esta muy bueno el ejemplo podrias enviarmelo al correo xfa jack1234@hotmail.es
Que tal Carlos,es un excelente ejemplo el que has aportado, pero al igual que el resto de personas, me gustaria poder ver (si es posible) el ejemplo completo...
gracias y saludos
A mi tambien me gustaria tener el codigo completo, muchas gracias!!
mipli80@hotmail.com
Buenas Noches. Alguno de uds me podria pasar el código?, intenté hacerlo, pero no me funciona. Dejo mi correo si alguno lo pudo hacer. Saludos Gracias!
mgabyvalle@gmail.com