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>
Todo lo que necesito es que la lista de arreglos sea devuelta desde la clase de acción.