3

我正在使用 json 插件来处理 struts2 中的 json 请求和响应。我想以 json 的形式发送一个数组数据作为响应,但我做不到。在 FE,我总是得到一个空数组。下面是我的 Action 类 struts.xml 和响应。

测试动作:

public class TestAction {

private String[] sArray = {"1","2"};
private int[] iArray = {1,2};
private String value = "value";

//getter setter
public String[] getSArray() {
    return sArray;
}
public int[] getIArray() {
    return iArray;
}
public String execute() {
return "success";    
}

struts.xml

<struts>
<package name="name" namespace="/" extends="default,json-default">
       <action name="Test" 
            class="com.actions.TestAction">
            <result name="success" type="json">
                <param name="excludeNullProperties">true</param>
                <param name="includeProperties">sArray,iArray,value</param>
            </result>
        </action>
</package>
</struts>

在前端我得到以下响应

{"sArray":[],"iArray":[],"value":"value"}
4

1 回答 1

2

首先,不要用单个小写字母(例如sArray)命名您的对象字段。将名称更改为不同的名称(例如strArray)。通过这种方式,您无需猜测 getter/setter 名称应该是什么。

其次, for 数组includeProperties属性的正确语法是.struts2-json-plugin^array\[\d+\]

因此,如果您的字段是strArray并且intArray配置应该是这样的:

<package name="name" namespace="/" extends="json-default">
  <action name="Test" 
      class="com.actions.TestAction">
    <result name="success" type="json">
      <param name="excludeNullProperties">true</param>
      <param name="includeProperties">^strArray\[\d+\],^intArray\[\d+\],value</param>
    </result>
  </action>
</package>
于 2014-07-03T17:48:46.340 回答