Extjs 4.2 自定义Ext.data.writer

本文分享了作者在学习ExtJS 4.2框架过程中的一些心得,特别是在需要自定义POST数据格式的情况下如何实现自定义writer的方法。通过具体代码示例展示了如何定义并使用SinglePost writer来满足特定的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习Ext4.2的MVC有半个月了,感觉进展缓慢,一方面是资料比较少,另一方面主要还是比较懒,加上工作上暂时也没这方面需求。Ext真是个不错的Web前端框架,就凭他自成体系,把js从头到脚包装一遍花的力气,也让人赞叹(当然好不好用是另外一回事)。所谓重量级可不是吹的。
虽然进度比较慢,还是有点小心得,记录下来。

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'
}
}
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值