ExtJs和Struts1 有一个页面要用多个ajax去action中加载数据,现在我的问题是struts1返回的数据一定要是json数据的格式吗?比如我从数据库中得到一个arraylist还有几个其他的变量值要一起返回给页面改怎么写呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 struts1返回的数据可以是任意的字符串格式LZ可以自行组合,然后自行解析比如一个arraylist你可以自定义用;号隔开,其他的几个变量可以用,号隔开,再用@符号跟arraylist隔开 好晕哦,谢谢楼上的回答,我现在不知道该怎么写了,arraylist里放的是多个对象每个对象里有多个字段,比如:action: ArrayList list = new ArrayList(); Emp e1 = new Emp(); e1.setId("1"); e1.setName("a"); list.add(e1); Emp e2 = new Emp(); e2.setId("2"); e2.setName("b"); list.add(e2); ... int tmp = 1; String str = "str"; 要返回的给页面的是list、tmp和str。麻烦能帮我写下要返回的数据怎么整到一起吗? lz可以把他们拼成1,a;2,b@1@strString str = "";for(Emp emp : list){ if(!str.equals("")){ str += ";"; } str += emp.getId() + "," + emp.getName();}str += "@" + tmp;str += "@" + str;用ajax返回前台,然后再解析这段字符串当然,拼接的形式很多,一般可以用json、xml等,也可以自行定义格式 楼上的意思是还是需要从新拼接的,但如果从数据库中返回的arraylist数据很多,那从查询出来再到action里从新封装数据岂不是会费很多时间吗?还有别的办法吗? 不管你用什么格式返回,总得拼接的lz你的arraylist有多大,如果很大的话考虑提前加载到页面,不适合用ajax了 1、自己手动取list里的值然后拼成json串2、利用已有的jar包进行转换,json-lib-2.2.1-jdk15.jar,json-lib-2.2.3-jdk15-javadoc.jar,json-lib-2.2.3-jdk15-sources.jar JsonListResult result = new JsonListResult(); result.setTotalRecords(beanList.size());//分页 result.setItems(beanList); String jsonString = JSONObject.fromObject(result).toString(); return jsonString; 哦,明白了,那先前那个问题比如我把它拼接成: String jsonStr = "{{id:1,name:a},{id:2,name:b}}";这样的话,在jsp中, var _store = new Ext.data.JsonStore({ autoLoad:true, proxy: new Ext.data.HttpProxy({url:urlJsp}), fields:["id", "name"] }); _store.on("load", function(_store){ var str = ""; for(var i=0; i<_store.getCount()-1 ; i++) str += _store.getAt(i).get("id")+" "+_store.getAt(i).get("name")+" "+"\n";});可tmp和str拼到哪里呢?该怎么解析呢? 日期UTC格式转化 又是头痛的正则表达式!! 如何用JS遍历显示XML文件? 高手帮下忙,如何禁止执行地址栏中的JS js实现关键字变色 用js如何对名称为变量的下拉列表框赋值? js取checkbox的值出现的问题 关于文字滚动效果,我也有问题!!!请大家来看看 求长整形数在JS中怎么做按位与操作 原生js写的jsonp在ie6下报错 uncaught exception: [Exception... "Out of Memory" nsresult: "0x8007000e jquery 获取值
Emp e1 = new Emp();
e1.setId("1");
e1.setName("a");
list.add(e1);
Emp e2 = new Emp();
e2.setId("2");
e2.setName("b");
list.add(e2);
...
int tmp = 1;
String str = "str";
要返回的给页面的是list、tmp和str。麻烦能帮我写下要返回的数据怎么整到一起吗?
1,a;2,b@1@str
String str = "";
for(Emp emp : list){
if(!str.equals("")){
str += ";";
}
str += emp.getId() + "," + emp.getName();
}
str += "@" + tmp;
str += "@" + str;用ajax返回前台,然后再解析这段字符串
当然,拼接的形式很多,一般可以用json、xml等,也可以自行定义格式
lz你的arraylist有多大,如果很大的话考虑提前加载到页面,不适合用ajax了
2、利用已有的jar包进行转换,json-lib-2.2.1-jdk15.jar,json-lib-2.2.3-jdk15-javadoc.jar,json-lib-2.2.3-jdk15-sources.jar
JsonListResult result = new JsonListResult();
result.setTotalRecords(beanList.size());//分页
result.setItems(beanList);
String jsonString = JSONObject.fromObject(result).toString();
return jsonString;
var _store = new Ext.data.JsonStore({
autoLoad:true,
proxy: new Ext.data.HttpProxy({url:urlJsp}),
fields:["id", "name"] });
_store.on("load", function(_store){
var str = "";
for(var i=0; i<_store.getCount()-1 ; i++)
str += _store.getAt(i).get("id")+" "+_store.getAt(i).get("name")+" "+"\n";});
可tmp和str拼到哪里呢?该怎么解析呢?