Struts 2动作没有将所需的结果返回给Jquery Ajax调用

时间:2016-03-23 10:27:45

标签: java jquery json ajax struts2

我使用以下代码从jQuery Ajax调用一个动作,它返回JSP页面的完整代码。我只需要在动作类中定义的数组列表。

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> 

响应 enter image description here

我只需要从动作类返回的数组列表。

1 个答案:

答案 0 :(得分:1)

您有两种方式:

旧(不必要的复杂)方式

返回JSP,在JSP内部迭代你的列表并做你需要的任何事情:创建一个JSON数组,或者编写HTML元素(例如。<option>元素)等等......例如:

<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>
]

新(右)方式

使用JSON插件,返回一个JSON结果,指定List作为根对象(read more):

<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>