Inicio > Desarrollo > Struts2 y JSON

Struts2 y JSON

Después de un tiempo he regresado con un nuevo post acerca de Struts2 y respuestas JSON, a veces es necesario realizar esta tarea sobre todo cuando existe un front que ejecuta peticiones Ajax con las cuales muchas veces es necesario manejar respuestas en JSON.

Este ejemplo se basara unicamente en la construcción de una respuesta de Action que construira una cadena JSON que sera manejada por el front, para esto utilizaremos el plugin de JSON para Struts2 que puedes descargar de aquí y para conocer un poco más se puede consultar la siguiente la documentación.

Una vez descargada la librería la añadimos a nuestro proyecto y empezamos con la construcción. Lo primero es la definición del Action dentro de nuestro archivo struts.xml de la siguiente manera:

<?xml version=»1.0″ encoding=»UTF-8″?><!DOCTYPE struts PUBLIC «-//Apache Software Foundation//DTD Struts Configuration 2.0//EN» «http://struts.apache.org/dtds/struts-2.0.dtd»>
<struts>
<constant name=»struts.devMode» value=»true» />
<package name=»default» namespace=»/» extends=»json-default»>
<action name=»ejemplo»>
<result type=»json» />
</action>
</package>
</struts>

Cómo se darán cuenta el Action declarado tiene como resultado una respuesta de tipo JSON y además el paquete de Actions lo extendemos de json-default.

Lo siguiente es la construcción del Action cómo se muestra a continuación:

public class JSONAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
private int numero;
private String cadena;
private boolean bandera;
private int[] numeros; 

public String execute() {
numero = 6567;
cadena = «Hola nariz de bola.»;
bandera = true;
numeros = new int[] { 1, 2, 3, 4, 5 };
return SUCCESS;
}

//Colocar getters y Setters

}

En esta clase muy sencilla lo único que hacemos es el construir diferentes variables de diferentes tipo para poder observar la manera en que el plugin de JSON elaborará la respuesta correspondiente.

Finalmente desplegamos nuestra aplicación e invocamos el Action correspondiente que nos mostrará lo siguiente:

Debido a que la invocación al Action se realiza directamente y cómo este regresa una respuesta de tipo JSON el navegador lo identifica automáticamente como un archivo.

El contenido del archivo es el siguiente:

Cómo podemos observar la respuesta es una cadena representada en formato JSON, este pequeño ejemplo nos servirá mas adelante con la integración de Struts2 y ExtJS el framework de JavaScript del cual ya he mostrado algunos ejemplos en este blog.

También podemos añadir un poco más de complejidad a este ejemplo y agregar a la respuesta una colección de un Bean que tenga como variables los datos de una persona por ejemplo.

Ya saben cualquier duda y/o comentario es bien recibido =D.

Categorías: Desarrollo Etiquetas: , , , ,
  1. MEE
    marzo 5, 2011 a las 7:15 pm

    Oye este es un muy buen ejemplo, pues a muchas personas les da miedo el JAVA

  2. Willian Rodriguez
    enero 21, 2012 a las 4:39 pm

    Hola Carlos, antes que nada quiero agradecer por los tutoriales que has subido, muy faciles de entender, estoy empezando con ExtJS y quisiera saber si podrias ayudarme o darme una pista de como hacer para persistir los datos obtenidos con un formulario en EXTJS utilzando struts.
    Como hago para enviar los datos en json a mi action guardar?

  3. Cristian Alejandro Hurtado Romero
    May 24, 2012 a las 9:33 am

    Excelente ejemplo, el único de cientos que me funcionó sin problema alguno. Sigue asi!!

  4. Francisco
    May 28, 2012 a las 9:46 pm

    sabes, tengo un problema con tablas que se relacionan con otras, claves foraneas. No me mustra resultados en el grid. El json que envia es el siguiente ( teniendo un dato en la tabla): {«agenteDAO»:null,»gridModel»:[],»loadonce»:false,»myAgentes»:null,»page»:0,»records»:1,»rows»:0,»searchField»:null,»searchOper»:null,»searchString»:null,»sidx»:null,»sord»:null,»total»:2147483647} se supone que gridModel debe tener la lista de «Agentes», pero llega vacio. Revise y al momento de retornar «SUCCESS» en el cdigo java, el grid esta correcto. No se que ocurre si saben algo agradeceria una respuesta. Saludos

  1. May 9, 2011 a las 5:23 pm

Replica a Carlos F. Cancelar la respuesta