JSON 使用 Struts 中的 jQuery 文件上传插件附加额外属性的响应 2

JSON response appended with extra properties using jQuery File-Upload plugin in Struts 2

我正在使用 jQuery 文件上传插件 Struts 2.

在我的操作中,我正在填充 JSON 对象 "results",这就是我想要我的操作 return.

但它也包括插件的 file 对象,这是一个不完整的 JSON 并导致我的回调中的一切都中断。 (请注意,如果我不填充我的 result 对象,那么它将 return 一个有效的 JSON "file" 对象。

有什么方法可以避免 returning "file" JSON 响应?我只想让我的动作 return 只 "results"

{
    "results": [
        {
            "ExcelPath": "/usr/test/test.xlsx",
            "ExcelName": "test.xlsx",
            "TestExcelStatus": "success"
        }
    ] 
}
{
    "file": {
        "absolute": true,
        "absoluteFile": null,
        "absolutePath": "\/usr\/local\/apache-tomcat-7.0.39\/temp"
    },
    "path": "\/usr\/local\/apache-tomcat-7.0.39\/temp\/up

我的Action如下:

org.json.JSONObject resp = new JSONObject();            
JSONArray resultsArray = new JSONArray();
resp.put("results",resultsArray);
JSONObject result = new JSONObject();           
result.put("TestExcelStatus", "success");
result.put("ExcelName", this.fileFileName);
result.put("ExcelPath", fileToCreate.getPath());
resultsArray.put(result);
    

servletResponse.reset();
servletResponse.setHeader("Content-Type","application/json; charset=UTF-8");
servletResponse.setHeader("CacheControl","no-cache");
servletResponse.setHeader("Pragma","no-cache");
servletResponse.setHeader("Expires","-1");
//resp.writeJSONString(out);
resp.write(servletResponse.getWriter());

我希望下面的行能够清除现有的 JSON,并且只有 return 我的 "results" JSON。但它仍然 return 处理所有事情。

servletResponse.reset();

并且所需的 JSON 响应必须如下所示,没有 "file"

{
    "results": [
        {
            "ExcelPath": "/usr/test/test.xlsx",
            "ExcelName": "test.xlsx",
            "TestExcelStatus": "success"
        }
    ] 
}

Struts 操作总是 returning 一个结果代码,操作调用使用该结果代码来执行为此操作配置的结果。我怀疑结果是 json 类型。

如果动作 returning json 结果,那么默认情况下 root 属性 被初始化为动作实例或模型(如果您使用的是模型驱动)行动。

表示root对象的所有public属性都会被序列化为JSON。您可以使用属性上的注释来控制此过程,或者使用参数配置结果以 include/exclude 结果中的某些属性。

其实你只需要将结果的root参数配置为return一个你序列化为JSON的对象。但是因为您直接写入响应,所以您可以将操作编辑的结果代码 return 更改为 NONE。这被没有 return 任何结果的操作使用。