Ext-js 框架Bug(传回客户端的json对象被包在一对<pre>标签中)

简介:  After 2 hours hard work ,I have solved the problem in the demo of permanent progress bar.         事实上,Ext-js的框架的BUG依然存在,这个BUG就是,当你用Spring框架的.

 After 2 hours hard work ,I have solved the problem in the demo of permanent progress bar.

 


 


 

 

事实上,Ext-js的框架的BUG依然存在,这个BUG就是,当你用Spring框架的jackson生成一个json对象的时候,而你客户端Ext-js上传一个文件到服务器端的时候,服务器端的返回json对象里面,会使用application/jsonMIME类型,然后返回到客户端就会自动加上<pre></pre>标签,这个问题是框架本身的,没办法解决:

 

http://www.sencha.com/forum/showthread.php?17248-lt-pre-gt-json-lt-pre-gt-in-File-upload-response-%28FF-only%29

 

http://stackoverflow.com/questions/7023531/extjs-4-spring-3-file-upload-server-sends-bad-response-content-type

 

http://topic.csdn.net/u/20110830/15/2002bebf-2472-4d41-9a12-1b239fce2a9b.html

 

http://blog.nroed.com/2011/11/21/iframe-post-file/

 

 

 

我的解决思路,就是巧妙的绕过Extjs的框架,这次,我不再让服务器端的json对象存于@ResponseBody中,而是让服务器端编码方式改为text/html,同时,我在通用类中构建一个将对象转为JSONObject的方法:


 
 
  1. /** 
  2.  
  3.      * added by charles.wang to fix the ext-js framework bug 
  4.  
  5.      */ 
  6.  
  7.      public JSONObject getJSONFormat (){ 
  8.  
  9.          try
  10.  
  11.          JSONObject obj = new JSONObject(); 
  12.  
  13.          obj.put("success", success); 
  14.  
  15.          obj.put("data", data); 
  16.  
  17.          return obj; 
  18.  
  19.          }catch(Exception ex){ 
  20.  
  21.              return new JSONObject(); 
  22.  
  23.          } 
  24.  
  25.          
  26.  
  27.           
  28.  
  29.      } 

与此同时,我在Controller里面的调用封装的ExtJsonResponsegetJSONFormat()方法,让他们按照我们的意图在服务器端,按照我们自定义的方式,而不是Spring jackson框架的方式就转为了json对象,最后吧json对象打印到HttpServletResponse输出流中,这种情况下,我们打印出去的其实是json对象的toString()形式,而不再是json对象,因此不会被自动加上<pre>标签对

 


 
 
  1. Long endTime = System.currentTimeMillis(); 
  2.  
  3.  
  4.  
  5.    // calculate the timeForParsing and use "second" as the metric 
  6.  
  7.    Double timeForParsing = (endTime - startTime + 0.0D) / 1000
  8.  
  9.  
  10.  
  11.    // now construct the correct result 
  12.  
  13.    updateCAAssetResult.setSuccess(true); 
  14.  
  15.  
  16.  
  17.    List<String> updateSuccessData = new ArrayList<String>(); 
  18.  
  19.    updateSuccessData.add("更新CA资产成功,共用时" + timeForParsing + "秒."); 
  20.  
  21.    updateCAAssetResult.setData(updateSuccessData); 
  22.  
  23.  
  24.  
  25.    if (logger.isDebugEnabled()) { 
  26.  
  27.        logger.debug("CA update process successful"); 
  28.  
  29.    } 
  30.  
  31.  
  32.  
  33.    response.getWriter().print(updateCAAssetResult.getJSONFormat()); 

 

 

然后我们Extjs客户端,就无需要decode了, 因为我们发过来的是json String,而不是json对象,所以不要decode,直接从中提取信息,然后就解决了。


此方法得益于突然的灵感,这里记录下,以免以后忘记。^_^








本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/834237,如需转载请自行联系原作者

目录
打赏
0
0
0
0
235
分享
相关文章
JavaScript JSON
【10月更文挑战第7天】JSON 是 JavaScript 中非常重要的一个数据格式,它为数据的表示和传输提供了一种简单而有效的方式。掌握 JSON 的使用方法和特点,对于开发高质量的 JavaScript 应用具有重要意义。
js中JSON的使用
介绍JSON的基本概念和在JavaScript中的使用方式,包括JSON格式的语法规则、使用`JSON.stringify()`和`JSON.parse()`方法进行对象与字符串的转换,以及处理JSON数组数据。
js中JSON的使用
json字符串如何转为list对象?
json字符串如何转为list对象?
732 7
js如何格式化一个JSON对象?
js如何格式化一个JSON对象?
164 3
JSON对象的stringify()和parse()方法使用
本文阐述了JSON对象的`stringify()`和`parse()`方法的用法,包括如何将JavaScript对象转换为JSON字符串,以及如何将JSON字符串解析回JavaScript对象,并讨论了转换过程中需要注意的事项。
JSON对象的stringify()和parse()方法使用
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
152 83
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
JSON数据解析实战:从嵌套结构到结构化表格
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。

热门文章

最新文章