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
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