/**
* http://extjs.com/forum/showthread.php?t=19529
*/
/*
* 作者:彭仁夔 blog:http://jxnuprk.cnblogs.com/或jljlpch.iteye.com
*/
Ext.namespace("Ext.ux.data");
Ext.ux.data.DWRProxy = function(config) {
Ext.apply(this, config);
if (!this.dwrFn)
alert("you must give the dwrFn to run!");
this.dwrlen = this.dwrFn.toString()/* 取得函数参数 长度 */
.match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").length - 1;
if (!this.limitPos)
this.limitPos = this.dwrlen - 1;
if (!this.startPos)
this.startPos = this.dwrlen - 2;
if (!this.sortPos)
this.sortPos = this.dwrlen - 3;
Ext.ux.data.DWRProxy.superclass.constructor.call(this);
};
Ext.extend(Ext.ux.data.DWRProxy, Ext.data.DataProxy, {
re : /start|limit|sort|dir/,
noPage : false,
noSort : true,
sort : '',
dir : "",
start : 0,
limit : 10,
load : function(params, reader, loadCallback, scope, arg) {
var l = this.dwrlen, dwrFnArgs = [], flag, t = {};
// 隔离短的请求时可能会引起的冲突
for (var p in this)
t[p] = this[p];
if (t.fireEvent("beforeload", t, params) !== false) {
var loadArgs = params['dwrFnArgs'] || params;
if (loadArgs instanceof Array) {/* 通过数组传入参数 */
for (var i = 0;i < loadArgs.length; i++) {
dwrFnArgs[i] = loadArgs[i];
}
} else {
for (var n in loadArgs) {/* 通过对象传入参数 */
if (t.re.exec(n)) {
flag = true;
t[n] = loadArgs[n];
} else {
dwrFnArgs.push(loadArgs[n]);
}
}
}
// 如果已经取得start,limit,sort等参数就不重复
if (!flag)
for (var p in params) {
if (t.re.exec(p))
t[p] = params[p];
}
// 主要针对于分页时出现的问题
if (!dwrFnArgs.length) {/* 没有传入参数(不包含分页等) */
if (t.initParams)/* 看看有没有初始化参数 */
dwrFnArgs = t.initParams;
else if (t.lastOptions) /* 看看上次成功的参数 */
dwrFnArgs = t.lastOptions;
}
var l = t.dwrlen, l2 = dwrFnArgs.length;
// 对不足位的补undefined,如果java中是基本类型,int,float就会出现错误
for (var i = l2 - 1;i < l; i++) {
dwrFnArgs.push(undefined);
}
// 默认是采用分页,采用
if (!t.noPage) {
dwrFnArgs[t.startPos] = t.start;
// 这里是为了防止分页时出现NAN值
params.start = t.start;
dwrFnArgs[t.limitPos] = t.limit;
params.limit = t.limit;
}
if (!t.noSort) {
var s = t.sort + " " + t.dir
dwrFnArgs[t.noPage ? l - 1 : t.sortPos] = s;
}
var cb = function(response) {
alert("success!");
t.lastOptions = dwrFnArgs;
var records = reader.readRecords(response);
t.fireEvent("load", t, response, loadCallback);
loadCallback.call(scope, records, arg, true);
}
var eh = function(message, exception) {
alert(message);
t.fireEvent("loadexception", t, message, loadCallback, exception);
loadCallback.call(scope, null, arg, false);
};
dwrFnArgs[l] = {// dwr配置参数
callback : cb,
exceptionHandler : eh
};
t.dwrFn.apply(Object, dwrFnArgs);
} else {
loadCallback.call(scope || t, null, arg, false);
}
}
});
分享到:
相关推荐
理解这些核心概念并结合实际的"DWRProxy.js"代码,我们可以深入学习如何在ExtJS应用程序中有效利用DWRProxy来实现与服务器的高效通信,从而提升用户体验。同时,DWRProxy结合源码阅读,可以帮助开发者更好地理解和...
《DWRProxy.js:在ExtJS中的应用与实践》 DWRProxy.js是Direct Web Remoting (DWR)框架中的一个重要组成部分,它在JavaScript和Java之间建立起桥梁,使得Web应用程序可以方便地进行异步通信。DWR允许前端JavaScript...
ExtJs中使用dwrproxy,和json来处理从数据库里查询出来的数据 其中dwrproxy还支持分页(分页功能没做),将war包下载下来后,直接放在tomcat里,然后启动tomcat就可以了 数据库方面,该项目里用的是mysql,数据文件在...
DWRproxy,全称Direct Web Remoting Proxy,是EXT框架中的一个重要组成部分,主要用来实现浏览器与服务器之间的异步通信。EXT是一个强大的JavaScript库,用于构建富客户端应用,而DWRproxy则是EXT与服务器端交互的...
这个例子中有登录,有...表格中的数据是通过DWRProxy加载共分3中形式,用以下3中解析器来解析的: DWRJsonReader DWRArrayReader DWRXmlReader 数据完全由JAVA方法返回,由DWR动态调用,利用了Spring作为Bean的容器。
总结,"dwrproxy.js"和"DWRTreeLoader.js"的组合使用,使得开发者可以利用DWR的便捷性与ExtJS的强大UI功能,轻松地实现服务器端动态加载和展现树形数据,大大提高了Web应用的交互性和用户体验。在这样的项目中,这两...
dwrProxy.js
EXTJS 3 整合DWR (DWRProxy、DWRTreeLoader、DWRGridProxy) 是一个在EXTJS 3.0版本中实现的重要技术整合,它将DWR(Direct Web Remoting)的强大功能引入到EXTJS的前端框架中,以实现更高效的数据交互。EXTJS是一个...
总的来说,`dwrproxy.js`、`DWRTreeLoader.js`和`PagingDWRProxy.js`是Ext框架与DWR集成的关键组件,它们提供了丰富的功能,帮助开发者实现与服务器的高效数据交互,创建动态、响应式的Web界面。在项目中正确地使用...
例如,开发者可以通过DWRProxy设置一个DWR服务,然后在客户端的GridPanel或TreePanel中配置相应的DWRGridProxy或DWRTreeLoader,这样就可以轻松地实现数据的动态加载和更新。这种集成方式尤其适用于需要大量实时数据...
Ext扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxy
总结一下,本话题介绍了如何在Ext2.2的GridPanel中实现分页处理,利用DWRProxy与后台进行数据交互。无论数据是以JS对象还是JSON格式传输,关键在于理解数据流的过程,并正确配置相关的Store、Reader和DWR方法。通过...
EXT2未加入对DWR的支持,此文件是对其的扩展进而实现DWR的支持
用EXT和DWR结合起来做工程时,在数据传输时会有点麻烦,这里提供的3个JS文件分别实现了DWR的数据代理,分页查询处理,动态树加载。并且实现了Ext.data.DWRArrayReader Ext.data.DWRXmlReader Ext.data....
dwrproxy.js 博文链接:https://cicada-it.iteye.com/blog/102949
EXT+DWR分页 ,前人基础修改,绝对能用 有问题的大家相互交流, 具体使用请参考我的文章EXT+DWR分页
DWRProxy是ExtJS中用于与DWR接口交互的类。它提供了设置DWR配置、执行远程方法和处理回调的方法。在ExtJS应用中,你可以创建一个DWRProxy实例,指定需要调用的DWR服务端接口,并在客户端进行调用。例如: ```...
综上所述,关于“经验总结-Extjs(一)数据交互设计”的主题,我们可以深入探讨ExtJS如何通过Store、Model、Proxy(尤其是DWRProxy)与服务器进行高效的数据交互,以及在实际项目中如何进行数据管理、事件处理和性能...