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; }
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
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
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.
Hola
Buen Post, lo mas interesante para mi fue la forma de poner el URL, podrias
explicar el porque de esto??