学习Ext4.2的MVC有半个月了,感觉进展缓慢,一方面是资料比较少,另一方面主要还是比较懒,加上工作上暂时也没这方面需求。Ext真是个不错的Web前端框架,就凭他自成体系,把js从头到脚包装一遍花的力气,也让人赞叹(当然好不好用是另外一回事)。所谓重量级可不是吹的。
虽然进度比较慢,还是有点小心得,记录下来。
Ext.data.writer的类型不是json就是xml等,有时候与我的要求不符,因为有时候post到后台的我要求的不是纯json,例如我经常这么干:
这样在一些场合非常方便,那么这时候就不能用
这种方式了,因为传回数据应该是 "jsonStr={json}",这时候可以自定义writer
注意,这里需要把data[0]变成json,如此就可以方便的实现自定义
自定义writer给编码提供了很大自由度(尤其是在MVC中),使用如下
虽然进度比较慢,还是有点小心得,记录下来。
Ext.data.writer的类型不是json就是xml等,有时候与我的要求不符,因为有时候post到后台的我要求的不是纯json,例如我经常这么干:
@Action(value = "userAction")
public class UserAction extends BaseAction {
private String jsonStr = null;
public void setJsonStr(String jsonStr) {
this.jsonStr = jsonStr;
}
public void changepassword(){
User u = new User();
u = JSON.parseObject(jsonStr,User.class);
//.......
}
}
这样在一些场合非常方便,那么这时候就不能用
writer : {
type : 'json'
}
这种方式了,因为传回数据应该是 "jsonStr={json}",这时候可以自定义writer
Ext.define('Ext.data.writer.SinglePost', {
extend: 'Ext.data.writer.Writer',
alternateClassName: 'Ext.data.SinglePostWriter',
alias: 'writer.singlepost',
writeRecords: function(request, data) {
request.params['jsonStr'] = Ext.JSON.encode(data[0]);
return request;
}
});
注意,这里需要把data[0]变成json,如此就可以方便的实现自定义
自定义writer给编码提供了很大自由度(尤其是在MVC中),使用如下
Ext.define('PJ.store.UserInfo',{
extend : 'Ext.data.Store',
model : 'PJ.model.UserInfo',
autoLoad : false,
autoSync : false,
proxy : {
type : 'ajax',
api : {
read : '/sshe/userAction!userlist.action',
//create
update : '/sshe/userAction!changepassword.action'
//destroy
},
reader: {
root : 'obj',
type: 'json',
successProperty: 'success'
},
writer : {
type : 'Singlepost'
}
}
});