2012-06-01 36 views
0

这是我的ExtJS代码,用于在网格中显示我的记录。如何在JAVA中为Ext.data.JsonStore创建JSONObject?

var remoteProxy = new Ext.data.ScriptTagProxy({ 
       url : 'hastanebilgilerinigetir' 
      }); 

      var recordFields = [ 
           { name : 'hid',   mapping : 'hid'}, 
           { name : 'isim', mapping : 'isim'}, 
           { name : 'adres', mapping : 'adres'}, 
           { name : 'telefon',  mapping : 'telefon'}, 
           { name : 'bashekimid',  mapping : 'bashekimid' } 
      ]; 

      var remoteJsonStore = new Ext.data.JsonStore({ 
       proxy   : remoteProxy, 
       storeId   : 'ourRemoteStore', 
       root   : 'records', 
       autoLoad  : false, 
       //totalProperty : 'totalCount', 
       remoteSort  : true, 
       fields   : recordFields, 
       idProperty  : 'hid' 
      }); 

      var textFieldEditor = new Ext.form.TextField(); 

      var numberFieldEditor = { 
        xtype  : 'numberfield', 
        minLength : 5, 
        maxLength : 5 
      }; 

      var columnModel = [ 
           { 
            header : 'Hastane Adı', 
            dataIndex : 'isim', 
            sortable : true, 
            editor : textFieldEditor 
           }, 
           { 
            header : 'Telefon', 
            dataIndex : 'telefon', 
            sortable : true, 
            editor : textFieldEditor 
           }, 
           { 
            header : 'Adres', 
            dataIndex : 'adres', 
            sortable : true, 
            editor : textFieldEditor 
           }, 
           { 
            header : 'Baş Hekim ID', 
            dataIndex : 'bashekimid', 
            sortable : true, 
            editor : numberFieldEditor 
           }, 
           { 
            header : 'Hastane ID', 
            dataIndex : 'hid', 
            sortable : true, 
            editor : numberFieldEditor 
           } 
           ]; 
    var grid = { 
      xtype  : 'editorgrid', 
      columns : columnModel, 
      id   : 'myEditorGrid', 
      store  : remoteJsonStore, 
      loadMask : true, 
      bbar  : pagingToolbar, 
      stripeRows : true, 
      viewConfig : { 
       forceFit : true 
      }, 
      listeners  : { 
       cellcontextmenu : doCellCtxMenu, 
       destroy   : function(thisGrid) { 
        if (thisGrid.rowCtxMenu) { 
         thisGrid.rowCtxMenu.destroy(); 
        } 
       } 
      } 
    }; 

    var hastanegridi = new Ext.Panel({ 
     title: 'Hastaneler', 
     height : 700, 
     width : 950, 
     border : false, 
     layout : 'fit', 
     items : grid 
    }); 


    remoteJsonStore.load({ 
     params : { 
      start : 0, 
      limit : 50 
     } 
    }); 

我有以下的Java代码来创建的JSONObject

@Override 
    public JSONObject listHastanesAsJson() { 
     List<Hastane> lst = hastaneDao.listHastane(); 

     JSONArray arr = new JSONArray(); 

//  int i=lst.size(); 
//  JSONObject counter = new JSONObject(); 
//  counter.put("totalCount", i); 
//  arr.add(counter); 


     for(Hastane kan:lst){ 

      JSONObject obj = new JSONObject(); 

      obj.put("hid", kan.getHid()); 
      obj.put("isim", kan.getIsim()); 
      obj.put("adres", kan.getAdres()); 
      obj.put("telefon", kan.getTelefon()); 
      obj.put("bashekimid", kan.getBahekimid()); 
      arr.add(obj); 
     } 


     JSONObject o = new JSONObject(); 
     o.put("records", arr); 
     return o; 
    } 

我的JSON数据是这样的:

{"records":[{"hid":1,"isim":"Zeynep Kamil","adres":"Istanbul","telefon":"056765434567","bashekimid":1},{"hid":2,"isim":"Ankara Hastanesi","adres":"Ankara","telefon":"345678987658","bashekimid":2},{"hid":3,"isim":"Baskent Hastanesi","adres":"Ankara","telefon":"567898765697","bashekimid":3}]} 

但是当我尝试以显示浏览器我的数据,我得到以下错误“无效标签”

enter image description here

当我在服务器端创建JSONObject时是否有错误?

我的JSON数据必须像在这个环节上,但我不知道如何构建这样我的数据:http://extjsinaction.com/dataQuery.php

+1

我验证上jsonlint.com的JSON,它是有效的。 – nhahtdh

+0

但有什么问题,我找不到 –

+1

你如何获取客户端的JSON? –

回答

1

您正在使用Ext.data.ScriptTagProxy女巫是JSONP(跨域请求)

您请求的URL应该是这样的:

http://extjsinaction.com/dataQuery.php? 回调= callbackFunction参数

你的反应应该是这样的:

callbackFunction({ 
    "records": [ 
     { 
      "hid": 1, 
      "isim": "Zeynep Kamil", 
      "adres": "Istanbul", 
      "telefon": "056765434567", 
      "bashekimid": 1 
     }, 
     { 
      "hid": 2, 
      "isim": "Ankara Hastanesi", 
      "adres": "Ankara", 
      "telefon": "345678987658", 
      "bashekimid": 2 
     }, 
     { 
      "hid": 3, 
      "isim": "Baskent Hastanesi", 
      "adres": "Ankara", 
      "telefon": "567898765697", 
      "bashekimid": 3 
     } 
    ] 
}) 

如果您需要更多信息关于JSONP谷歌是你的朋友。

一些好的examples in documentation

0
[{"hid":1,"isim":"Zeynep Kamil","adres":"Istanbul","telefon":"056765434567","bashekimid":1},{"hid":2,"isim":"Ankara Hastanesi","adres":"Ankara","telefon":"345678987658","bashekimid":2},{"hid":3,"isim":"Baskent Hastanesi","adres":"Ankara","telefon":"567898765697","bashekimid":3}] 

你能从你的服务器发送这样的事情还是返回JSONArray。 我从来没有做过对ExtJs但这是我如何填充我的网格在DOJO

+0

这不起作用BOSS –

+0

检查EXtJs的文档。网格支持的是什么JSON DataStruture。 – BOSS

相关问题