En este post no detendremos en como hacerlo posible y en uno posterior comentaremos cual puede ser un error frecuente. Para empezar definimos un paquete dentro del fichero struts.xml donde incluiremos todos los actions que vayan a devolver como respuesta un json:
Podemos hacer las declaraciones de 2 formas, una con anotaciones y otra con la forma convencional de struts indicandolo en su fichero de configuración. En este post lo indicaremos con anotaciones y en el del error mediante fichero de configuración. El siguiente paso es crear nuestra clase he indicar que es un action extendiendo de ActionSupport y decir a que paquete pertenece mediante anotaciones.
@Namespace("/") @ResultPath("/") @ParentPackage("es.home.example.json") public class ValidateObjectAction extends ActionSupport{Una vez tenido nuestro action creado debemos indicar en que método vamos a realizar toda la lógica, lo normal es llamarlo execute pero con struts 2 eso no es necesario ya. Mediante anotaciones y propiedades le indicamos cuando va a ser llamado (cuando se indique la direccion del action 'validateObjectJson', y que cuando todo sea correcto ('success') que devuelva json.
@Action(value="validateObjectJson", results={@org.apache.struts2.convention.annotation.Result(name="success", type="json")}) public String execute(){ ... }Hay que tener en cuenta que los atributos de la clase se devolverán en formato de json y que tenemos que saber manejarlo posteriormente en nuestra clase JSP. Este formato es muy util cuando trabajamos con javascript. Esta podría ser un ejemplo de llamada javascript para dicho Action.
function validateObject() { var formulario = dojo.byId("form01"); formulario.action = 'validateObjectJson.action'; var xhrArgs = { form : formulario, handleAs : "json", load : function(data) { ... } }; dojo.xhrPost(xhrArgs); }
No hay comentarios:
Publicar un comentario