有一个页面要用多个ajax去action中加载数据,现在我的问题是struts1返回的数据一定要是json数据的格式吗?比如我从数据库中得到一个arraylist还有几个其他的变量值要一起返回给页面改怎么写呢?

解决方案 »

  1.   

    struts1返回的数据可以是任意的字符串格式LZ可以自行组合,然后自行解析比如一个arraylist你可以自定义用;号隔开,其他的几个变量可以用,号隔开,再用@符号跟arraylist隔开
      

  2.   

    好晕哦,谢谢楼上的回答,我现在不知道该怎么写了,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。麻烦能帮我写下要返回的数据怎么整到一起吗?
      

  3.   

    lz可以把他们拼成
    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等,也可以自行定义格式
      

  4.   

    楼上的意思是还是需要从新拼接的,但如果从数据库中返回的arraylist数据很多,那从查询出来再到action里从新封装数据岂不是会费很多时间吗?还有别的办法吗?
      

  5.   

    不管你用什么格式返回,总得拼接的
    lz你的arraylist有多大,如果很大的话考虑提前加载到页面,不适合用ajax了
      

  6.   

    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
      

  7.   


     JsonListResult result = new JsonListResult();
        result.setTotalRecords(beanList.size());//分页
        result.setItems(beanList);
        String jsonString = JSONObject.fromObject(result).toString();
        return jsonString;
      

  8.   

    哦,明白了,那先前那个问题比如我把它拼接成:  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拼到哪里呢?该怎么解析呢?