Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将json字符串加载到extjs4 arraystore中?_Java_Json_Extjs - Fatal编程技术网

Java 如何将json字符串加载到extjs4 arraystore中?

Java 如何将json字符串加载到extjs4 arraystore中?,java,json,extjs,Java,Json,Extjs,这是我的型号:- Ext.define('attributeModel', { extend : 'Ext.data.Model', fields : ['attributeName'] idProperty: 'attributeName' }); Ext.define('entityModel', { extend : 'Ext.data.Model', fields : ['entityName'] idP

这是我的型号:-

Ext.define('attributeModel', {
    extend   : 'Ext.data.Model',
    fields   : ['attributeName']     
    idProperty: 'attributeName'
});
Ext.define('entityModel', {
    extend   : 'Ext.data.Model',
    fields   : ['entityName']     
    idProperty: 'entityName',
    hasMany: {model: 'attributeModel', name:  'attributes'}
});
Ext.define('entityStore', {
extend      : 'Ext.data.ArrayStore',
model       : 'entityModel',
storeId:'entityStoreId',
proxy: {
      type: 'memory',
      reader: {
           type: 'json'
       }
    }
这是我的店铺:-

Ext.define('attributeModel', {
    extend   : 'Ext.data.Model',
    fields   : ['attributeName']     
    idProperty: 'attributeName'
});
Ext.define('entityModel', {
    extend   : 'Ext.data.Model',
    fields   : ['entityName']     
    idProperty: 'entityName',
    hasMany: {model: 'attributeModel', name:  'attributes'}
});
Ext.define('entityStore', {
extend      : 'Ext.data.ArrayStore',
model       : 'entityModel',
storeId:'entityStoreId',
proxy: {
      type: 'memory',
      reader: {
           type: 'json'
       }
    }
}))

这些是我的Java Bean类:-

Ext.define('attributeModel', {
    extend   : 'Ext.data.Model',
    fields   : ['attributeName']     
    idProperty: 'attributeName'
});
Ext.define('entityModel', {
    extend   : 'Ext.data.Model',
    fields   : ['entityName']     
    idProperty: 'entityName',
    hasMany: {model: 'attributeModel', name:  'attributes'}
});
Ext.define('entityStore', {
extend      : 'Ext.data.ArrayStore',
model       : 'entityModel',
storeId:'entityStoreId',
proxy: {
      type: 'memory',
      reader: {
           type: 'json'
       }
    }
EntityVO.java

import java.util.ArrayList;

public class EntityVO { 

 private String entityName;
 private ArrayList<AttributeVO> attrList;

 public ArrayList<AttributeVO> getAttrList() {
    return attrList;
 }
 public void setAttrList(ArrayList<AttributeVO> attrList) {
    this.attrList = attrList;
 }
 public String getEntityName() {
    return entityName;
 }
 public void setEntityName(String entityName) {
    this.entityName = entityName;
 }          
}
 public class AttributeVO{  

  private String attributeName;
  public String getAttributeName() {
     return attributeName;
  }
  public void setAttributeName(String attributeName) {
    this.attributeName = attributeName;
  }         
}
我在
java
中填充
EntityVO
值,并使用
ObjectMapper
创建一个
json
字符串,并将其作为
响应发送到
Extjs

当我在
extjs
处解码我的
json
字符串并将其设置为
entityStore
时,它不会加载任何数据,也不会抛出任何错误。有没有办法将bean中的数据加载到
extjs
存储中

var store = Ext.create('entityStore');
store.loadData(responseJson); //not working 
json响应:

{
"entityList": [{
    "entityName": "entity1",
    "attrList": [{
        "attributeName": "attr1"
    }, {
        "attributeName": "attr2"
    }]
}, {
    "entityName": "entity2",
    "attrList": [{
        "attributeName": "attr1"
    }]
}]
}

您可能从ajax请求的回调方法得到响应。如果问题是这个,试试那个

var resp = Ext.JSON.decode(responseJson.responseText);
store.loadData(resp);
您似乎忘记了定义存储的根属性。您可以像这样在存储定义中指定根属性

  reader: {
       type: 'json',
       root: 'entityList'
   }
store.loadData(resp.entityList);
或者你可以这样传递值

  reader: {
       type: 'json',
       root: 'entityList'
   }
store.loadData(resp.entityList);
您可能从ajax请求的回调方法获得响应。如果问题是这个,试试那个

var resp = Ext.JSON.decode(responseJson.responseText);
store.loadData(resp);
您似乎忘记了定义存储的根属性。您可以像这样在存储定义中指定根属性

  reader: {
       type: 'json',
       root: 'entityList'
   }
store.loadData(resp.entityList);
或者你可以这样传递值

  reader: {
       type: 'json',
       root: 'entityList'
   }
store.loadData(resp.entityList);

首先,您需要解码json负载

var resp = Ext.JSON.decode(responseJson.responseText);
在存储中添加元素(即“Ext.data.ArrayStore”)所需的下一个操作是简单地使用“add”命令

下面是一个非常简单的小提琴示例

小提琴代码:

Ext.define('attributeModel', {
extend: 'Ext.data.Model',
fields: ['attributeName'],
idProperty: 'attributeName'
});

Ext.define('entityModel', {
extend: 'Ext.data.Model',
fields: ['entityName'],
idProperty: 'entityName',
hasMany: {
    model: 'attributeModel',
    name: 'attributes'
}
});


Ext.define('entityStore', {
extend: 'Ext.data.ArrayStore',
model: 'entityModel',
storeId: 'entityStoreId',
proxy: {
    type: 'memory',
    reader: {
        type: 'json'
    }
}
});

Ext.application({
name: 'Fiddle',
launch: function() {
    var store = Ext.create('entityStore');
    var jsonStr = JSON.stringify({
        "entityList": [{
            "entityName": "entity1",
            "attrList": [{
                "attributeName": "attr1"
            }, {
                "attributeName": "attr2"
            }]
        }, {
            "entityName": "entity2",
            "attrList": [{
                "attributeName": "attr1"
            }]
        }]

    });
    var resp = Ext.JSON.decode(jsonStr);
    var countBefore = store.count();
    store.add(resp);
    var countAfter = store.count();
    Ext.Msg.alert('Fiddle', 'store before add count: ' + countBefore + ', now: ----' + countAfter + ' ' + JSON.stringify(store.getAt(0).data));

}
});

首先,您需要解码json负载

var resp = Ext.JSON.decode(responseJson.responseText);
在存储中添加元素(即“Ext.data.ArrayStore”)所需的下一个操作是简单地使用“add”命令

下面是一个非常简单的小提琴示例

小提琴代码:

Ext.define('attributeModel', {
extend: 'Ext.data.Model',
fields: ['attributeName'],
idProperty: 'attributeName'
});

Ext.define('entityModel', {
extend: 'Ext.data.Model',
fields: ['entityName'],
idProperty: 'entityName',
hasMany: {
    model: 'attributeModel',
    name: 'attributes'
}
});


Ext.define('entityStore', {
extend: 'Ext.data.ArrayStore',
model: 'entityModel',
storeId: 'entityStoreId',
proxy: {
    type: 'memory',
    reader: {
        type: 'json'
    }
}
});

Ext.application({
name: 'Fiddle',
launch: function() {
    var store = Ext.create('entityStore');
    var jsonStr = JSON.stringify({
        "entityList": [{
            "entityName": "entity1",
            "attrList": [{
                "attributeName": "attr1"
            }, {
                "attributeName": "attr2"
            }]
        }, {
            "entityName": "entity2",
            "attrList": [{
                "attributeName": "attr1"
            }]
        }]

    });
    var resp = Ext.JSON.decode(jsonStr);
    var countBefore = store.count();
    store.add(resp);
    var countAfter = store.count();
    Ext.Msg.alert('Fiddle', 'store before add count: ' + countBefore + ', now: ----' + countAfter + ' ' + JSON.stringify(store.getAt(0).data));

}
});

您的
响应是什么?你能更新你在
responseJson
中得到的
值吗?@KrutiPatel我已经更新了值。你可以通过这个线程(可能会有帮助):你的
responseJson
是什么?你能更新你在
responseJson
中得到的
值吗?@KrutiPatel我已经更新了值。你可以通过这个线程(可能会有帮助):