我在Struts 2中使用jQuery File-Upload插件。
在我的操作中,我填充了JSON对象"results"
,这就是我希望我的行动返回的所有内容。
但它也包括插件的file
对象,这是一个不完整的JSON,导致一切都在我的回调上中断。
(请注意,如果我不填充我的result
对象,则会返回有效的JSON "file"
对象。
有什么方法可以避免返回"file"
JSON响应吗?我只想让我的行动只返回"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
我的行动如下
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并仅返回我的"results"
JSON。但它仍在回归所有事情。
servletResponse.reset();
如果没有"file"
,所需的JSON响应必须如下所示。
{
"results": [
{
"ExcelPath": "/usr/test/test.xlsx",
"ExcelName": "test.xlsx",
"TestExcelStatus": "success"
}
]
}
答案 0 :(得分:0)
Struts操作始终返回操作调用使用的结果代码,以执行为此操作配置的结果。我怀疑结果是json
类型。
如果返回json
结果的操作默认情况下root
属性初始化为动作实例或模型(如果您正在使用模型驱动的操作)。
这意味着root
对象的所有公共属性都将序列化为JSON。您可以使用属性上的注释来控制此过程,或者使用参数将结果配置为包含/排除结果中的某些属性。
实际上,您只需要配置结果的root
参数,以返回序列化为JSON的对象。但是因为您直接写入响应,所以可以将操作返回的结果代码更改为NONE
。这不会返回任何结果的操作。