Java 无法发回struts2 json插件中的数组

Java 无法发回struts2 json插件中的数组,java,arrays,json,struts2,struts2-json-plugin,Java,Arrays,Json,Struts2,Struts2 Json Plugin,我正在使用json插件处理struts2中的json请求和响应。我想以json的形式发送一个数组数据作为响应,但我无法这样做。在FE中,我总是得到一个空数组。下面是我的操作类struts.xml和响应 测试操作: public class TestAction { private String[] sArray = {"1","2"}; private int[] iArray = {1,2}; private String value = "value"; //getter setter

我正在使用json插件处理struts2中的json请求和响应。我想以json的形式发送一个数组数据作为响应,但我无法这样做。在FE中,我总是得到一个空数组。下面是我的操作类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
)。将名称更改为其他名称(例如
strArray
)。这样,您就不需要猜测getter/setter的名称应该是什么

其次,数组的
struts2 json插件
includeProperties
属性的正确语法是
^array\[\d+\]

因此,如果您的字段是
strArray
intArray
,则配置应如下所示:


真的
^strArray\[\d+\],^intArray\[\d+\],值

extends=“default
应该是
extends=“struts default
,而不是强制性的(因为
json default
已经扩展了
struts default
),并且不是问题的原因。谢谢您提供的信息。我把参数改成这个sArray,它就工作了我得到了sArray的值,它就工作了?如果1)将初始化放在execute()方法中,或者2)从数组更改为列表,或者3)删除exclude和includeproperty,它是否有效?它应该可以工作,我们缺少一些基本的东西:)你确定你的Getter和Setter都在那里并且都很好吗?是的Getter-Setter没有问题。我遵循不同的教程,如果我们想发送一个数组,没有什么特别的事情需要做。同样,如果我用上面的方法,反应会有点不同。我得到的回应是[“1”,“2”]这里应该是{“sArray”:[“1”,“2”]}当然,我的建议是在黑暗中拍摄的,因为它显然应该按原样工作,而您的
root
尝试就是这样工作的,因为它不是整个操作,而是按照请求仅序列化根对象:
{"sArray":[],"iArray":[],"value":"value"}