采用代理方式加载grid数据,如果需要刷新store内容,只需要将store reload就行了
Ext.define('TestViewModel',{
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.TestViewModel',
requires:[
'TestGridModel'
],
//stores属性里可指定多个store
stores:{
testGridStore : {
model : 'TestGridModel',
autoLoad : true,
pageSize : 10
}
}
});
Ext.define('TestGridModel', {
extend : 'Ext.data.Model',
fields : [{
name : 'name',
type : 'string'
},{
name : 'age',
type : 'int'
}],
idProperty : 'unknown',
schema : {
id : 'testGridSchema',
namespace : '', //可以直接使用名字空间里面的这个名字
proxy : {
type : 'ajax',
method : 'post',
actionMethods : { //保证提交的中文参数不是乱码
read : 'POST'
},
url : 'testAction!testMethod.action', //填写action
reader : {
type : 'json',
rootProperty : 'list',
totalProperty : 'size'
}
}
}
});
假设http请求返回的json字符串是如下格式:
{
"desc" : "xxxxxxx",
"itemTotal" : "20",
"items" : [
{
"desc" : "xxxx",
"Users" : {
"name" : 0,
"age" : 20
}
}, {
"desc" : "xxxxx",
"Users" : {
"name" : 0,
"age" : 20
}
}
]
}
对字符串进行解析
private List<User> decodeJsonToObject(String json){
List<User> userList = new ArrayList<User>();
JSONObject total = JSONObject.fromObject(json);
JSONArray result = total.getJSONArray("items");
for(int i = 0; i < result.size(); i++){
User user= new User();
JSONObject userObj = result.getJSONObject(i);
JSONObject users= userObj.getJSONObject("Users");
user.setAge(users.getInt("age"));
user.setName(users.getString("name"));
userList .add(user);
}
return userList ;
}
public String testMethod(){
/**
*HTTP REUQEST
*/
list=decodeJsonToObject(json);
count=list.size();
return SUCCESS;
}