java jquery json ajax struts2

java - La acción de Struts 2 no devuelve el resultado deseado a la llamada de Jquery Ajax



json struts2 (1)

Tienes dos formas:

Camino viejo (innecesariamente complejo)

Devuelve un JSP, dentro del JSP itera tu lista y haz lo que necesites: crea una matriz JSON o escribe elementos HTML (por ejemplo, elementos de <option> ), etc. ... por ejemplo:

<action name="getAllDivisions" method="getAllDivisions" class="foo.bar.DivisionAction"> <result name="success">/jsp/users/allDivisions.jsp</result> </action>

allDivisions.jsp

<%@ taglib prefix="s" uri="/struts-tags" %> [ <s:iterator value="divisionList" status="ctr"> { "id" : "<s:property value=''modelId'' />", "modelName" : "<s:property value=''modelName'' />" } <s:if test="%{#ctr.count < divisionList.size}"> , </s:if> </s:iterator> ]

Nueva forma (derecha)

Utilice el complemento JSON, devuelva un resultado JSON que especifique su Lista como el objeto raíz ( lea más ):

<package name="DIVISION" namespace="/" extends="json-default"> <action name="getAllDivisions" method="getAllDivisions" class="foo.bar.DivisionAction"> <result name="success" type="json> <param name="root"> divisionList </param> </result> </action>

Estoy llamando a una acción de jQuery Ajax con el siguiente código y me devuelve el código completo de la página JSP. Todo lo que necesito es la lista de arreglos que se define en la clase de acción.

dashboard.js

$.ajax({ url : ''ELD/getAllDivisions'', type : ''POST'', dataType: ''text/javascript'', success : function(data) { alert("success"); var response = data; alert(response); });

DivisionAction.java

@Autowired private DivisionService divisionService; private List<DivisionModel> divisionList = new ArrayList<DivisionModel>(); public String getAllDivisions() { divisionList = divisionService.getAllDivisions(); return SUCCESS; }

struts.xml

<constant name="struts.devMode" value="true" /> <package name="DIVISION" namespace="/" extends="struts-default"> <action name="getAllDivisions" method="getAllDivisions" class="foo.bar.DivisionAction"> <result name="success">/jsp/users/AdminDashboard.jsp</result> </action>

Respuesta

Todo lo que necesito es que la lista de arreglos sea devuelta desde la clase de acción.