您的位置:首页 > 编程语言 > Java开发

Ext2.2与Struts2集成,使用Json数据格式传输数据问题

2008-09-15 16:59 756 查看
 Struts2与Ext集成生成Tree关键问题
1.Struts2 使用jsonplugin插件进行格式化java对象,其返回的数据格式为
  {"xxx":"[{json}]"},其中xxx为需要返回数据的名称,json为返回json的具体内容,Ext树要求的json格  
  式为[{json}].
2.Struts2 返回json时其他包含双引号,导致数据返回时会自动加上转义符"/"。
以上三个问题解决办法
1:最简单办法是重写treeloader中的processResponse对服务器返回数据进行格式化,取得其中json数据,
  关键代码:
  loader:new Tree.TreeLoader({
            dataUrl:'TreeAjax.action',
            processResponse:function(response,node,callback){              
                var data = response.responseText;
                var temp=Ext.decode(data);
                var json=temp["xxx"];
                try {
                      var o = eval("("+json+")");
                      node.beginUpdate();
                      for(var i = 0, len = o.length; i < len; i++){
                      var n = this.createNode(o[i]);
                      if(n){
                            node.appendChild(n);
                      }}
                 node.endUpdate();
                 if(typeof callback == "function"){
                      callback(this, node);
                 }
                 }catch(e){
                     this.handleFailure(response);
                 }
            }  
        }),
    其中xxx为服务器返回json的名称。与问题1对应。
2.问题2简单解决办法是在action或拦截器中对返回数据进行处理,处理办法很简单,既将数据中的“ " ”用
“ ' ”(双引号 用单引号代替),数据传回客服端不回自动加上转义符。
  关键代码:
  mString.append(JSONUtil.serialize(menu));
  
  for(int i=0;i<mString.length();i++){
   if(mString.charAt(i)=='/"'){
    mString.setCharAt(i, '/'');
   }
  }

  该实例页面为example下的tree/reorder.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐