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我已经更新了值。你可以通过这个线程(可能会有帮助):