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 任何结果的操作使用。
我正在使用 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 任何结果的操作使用。