Ejemplo AJAX con JQuery + Struts + JSON

El siguiente snippet realiza una llamada asíncrona a una url que devuelve texto en formato JSON al hacer click sobre un botón cuyo id es «idBoton» para posteriormente rellenar el select cuyo id es «idSelect».

$("#idBoton").click(function () { 
	      $.getJSON("./devuelveJSON.do",
	        function(data){	        
	          $("select[name='idSelect']").removeOption(/./);
	          $.each(data.listaObjetos, function(i,objeto){
	          	$("select[name='idSelect']").addOption(objeto.id, "[" + objeto.nombre + "] " ); 	          		                      
	          });
	        });
	});

Para la manipulación de Selects (del modo que se hace aquí) hay que importar un plugin de JQuery que se encuentra en la siguiente URL http://www.texotela.co.uk/code/jquery/select/.

A continuación se muestra como devolver una cadena JSON desde un action de Struts. En el ejemplo el JSON se genera a partir de un ArrayList de objetos «Objeto» (valga la redundancia). Cada objeto tiene como atributos un «id» y un «nombre». Para la conversión de listas a cadenas JSON se usa Json-lib, una librería java muy útil para la transformacion de beans, mapas, colecciones, arrays y XML a JSON y viceversa.

public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

response.setContentType("text/json");

ArrayList lista = new ArrayList();
Objeto objeto =new Objeto();
objeto.setId("1");
objeto.setNombre("Objeto 1");

lista.add(objeto);

objeto.setId("2");
objeto.setNombre("Objeto 2");

lista.add(objeto);

JSONArray jsonArray = JSONArray.fromObject(lista);

PrintWriter pw = response.getWriter();
pw.write("({\"listaObjetos\":" + jsonArray.toString() + "})");
pw.flush();
pw.close();
return null;

}

4 Respuestas to “Ejemplo AJAX con JQuery + Struts + JSON”


  1. 1 Erick abril 24, 2009 a las 20:13

    Hola

    Te queria preguntar talvez tu sabes como podria hacer. No se si ya has utilizado el display tag, bueno lo que yo necesito es con ese arrayList de objetos devueltos por el action cargar el displaytag.

    Bueno vale la pena preguntar talvez tu me prodrias ayudar, pero de todos modos, excelente el ejemplo, muchas gracias

    Erick

  2. 2 Nauricio Villa May 11, 2009 a las 06:58

    Erick, como ya este ejemplo trabaja con jQuery te recomiendo utilizar el plugin pagination de jquery para el manejo de paginaciòn..

    http://plugins.jquery.com/project/pagination

    Mauricio Villa

  3. 3 Gian caro junio 22, 2009 a las 10:10

    Hola, me agrada mucho tu post, espero me des una pista, o alguna ayuda, mira cada vez que realizo esto me devuelve una exepcion
    JSONArray jsonArray = JSONArray.fromObject(lista);

    estoy usando jdk 1.6 y las librerias necesarias para realizar el array, pero igual siempre el mismo error.

  4. 4 Erick agosto 23, 2009 a las 20:10

    Hola

    Buen Post, lo mas interesante para mi fue la forma de poner el URL, podrias
    explicar el porque de esto??


Deja un comentario




Add to Technorati Favorites
Clicky Web Analytics Clicky

Flickr Photos