Ext.data.DWRProxy = function(dwrCall, pagingAndSort){
Ext.data.DWRProxy.superclass.constructor.call(this);
this.dwrCall = dwrCall;
//this.args = args;
this.pagingAndSort = (pagingAndSort!=undefined ? pagingAndSort : true);
};
Ext.extend(Ext.data.DWRProxy, Ext.data.DataProxy, {
load : function(params, reader, callback, scope, arg) {
if(this.fireEvent("beforeload", this, params) !== false) {
var sort;
if(params.sort && params.dir) sort = params.sort + ' ' + params.dir;
else sort = '';
var delegate = this.loadResponse.createDelegate(this, [reader, callback, scope, arg], 1);
var callParams = new Array();
if(arg.arg) {
callParams = arg.arg.slice();
}
if(this.pagingAndSort) {
callParams.push(params.start);
callParams.push(params.limit);
callParams.push(sort);
}
callParams.push(delegate);
this.dwrCall.apply(this, callParams);
} else {
callback.call(scope || this, null, arg, false);
}
},
loadResponse : function(listRange, reader, callback, scope, arg) {
var result;
try {
result = reader.read(listRange);
} catch(e) {
this.fireEvent("loadexception", this, null, response, e);
callback.call(scope, null, arg, false);
return;
}
callback.call(scope, result, arg, true);
},
update : function(dataSet){},
updateResponse : function(dataSet)
{}
});
Ext.data.ListRangeReader = function(meta, recordType){
Ext.data.ListRangeReader.superclass.constructor.call(this, meta, recordType);
this.recordType = recordType;
};
Ext.extend(Ext.data.ListRangeReader, Ext.data.DataReader, {
getJsonAccessor: function(){
var re = /[\[\.]/;
return function(expr) {
try {
return(re.test(expr))
? new Function("obj", "return obj." + expr)
: function(obj){
return obj[expr];
};
} catch(e){}
return Ext.emptyFn;
};
}(),
read : function(o){
var recordType = this.recordType, fields = recordType.prototype.fields;
//Generate extraction functions for the totalProperty, the root, the id, and for each field
if (!this.ef) {
if(this.meta.totalProperty) {
this.getTotal = this.getJsonAccessor(this.meta.totalProperty);
}
if(this.meta.successProperty) {
this.getSuccess = this.getJsonAccessor(this.meta.successProperty);
}
if (this.meta.id) {
var g = this.getJsonAccessor(this.meta.id);
this.getId = function(rec) {
var r = g(rec);
return (r === undefined || r === "") ? null : r;
};
} else {
this.getId = function(){return null;};
}
this.ef = [];
for(var i = 0; i < fields.length; i++){
f = fields.items[i];
var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name;
this.ef[i] = this.getJsonAccessor(map);
}
}
var records = [];
var root = o.data, c = root.length, totalRecords = c, success = true;
if(this.meta.totalProperty){
var v = parseInt(this.getTotal(o), 10);
if(!isNaN(v)){
totalRecords = v;
}
}
if(this.meta.successProperty){
var v = this.getSuccess(o);
if(v === false || v === 'false'){
success = false;
}
}
for(var i = 0; i < c; i++){
var n = root[i];
var values = {};
var id = this.getId(n);
for(var j = 0; j < fields.length; j++){
f = fields.items[j];
var v = this.ef[j](n);
values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue);
}
var record = new recordType(values, id);
records[i] = record;
}
return {
success : success,
records : records,
totalRecords : totalRecords
};
}
});
分享到:
相关推荐
这段代码创建了一个`refreshLogs`函数,它使用DWR调用后台的`getRecentLogs`方法,并将返回的日志更新到`logConsole`元素中。通过设置定时器,我们可以实现日志的实时更新,类似于控制台的滚动显示。 为了提高用户...
- **DWR调用**:JavaScript代码调用DWR生成的接口,传递文件数据到后台。 - **后台处理**:服务器接收到文件数据后,将其保存到指定位置,并可能执行一些验证(如文件类型、大小限制)。 - **反馈结果**:服务器...
2. **读取(Read)**:客户端通过DWR调用服务器端的方法获取列表中的所有数据,或者根据特定条件查询数据,然后在页面上展示。 3. **更新(Update)**:当用户修改某个对象的属性后,通过DWR更新服务器端的内存列表中的...
Oracle作为后台数据库,意味着项目使用Oracle数据库存储和管理数据。Oracle是全球领先的数据库管理系统之一,以其高性能、高可扩展性和安全性著称,特别适合大型企业级应用。开发者需要熟悉SQL语法以及Oracle提供的...
Grid Panel是Ext JS中用于显示和操作表格数据的重要组件,而DWR则负责在后台处理数据操作并将其结果返回给前端。 在实际的应用场景中,开发者可能会遇到以下知识点: 1. **Ext JS Grid Panel**:Grid Panel是Ext ...
将象用exclude和incluce来通知DWR隔离creator的方法一样,converter也有一个类似的配置方法.因为指定属性转换只有针对bean才有效(基本类型的转换没有必要指定属性),这个功能只能应用与特定的converter即BeanConverter...
DWR使得开发人员能够使用JavaScript轻松地调用服务器端的Java方法,就像它们是本地函数一样。这种技术在创建动态、交互性强的Web应用时非常有用,特别是对于需要频繁更新数据或者执行复杂操作的场景。 **Ajax...
在前端,使用DWR来实现实时通信,当用户在前端选择一个级别时,通过Ajax请求调用后端服务,获取并显示下一级别的数据。 为了实现这个功能,你需要了解JavaScript基础、DWR的API用法、Hibernate的配置和映射、以及...
在这个项目中,DWR3.0可能被用来实现在前端页面与后台服务之间的交互,比如实时数据显示或者用户输入的即时验证。 4. **LigerUI**:LigerUI是一个基于jQuery的前端UI框架,提供了丰富的组件和样式,如表格、表单、...
在“DWR+FileUpload”场景中,DWR主要负责在后台处理文件上传请求,并将进度信息反馈给前端。 **文件上传** 文件上传是Web应用中用户交互的重要部分,允许用户将本地文件传输到服务器。在HTML5之前,文件上传通常...
在本项目中,Hibernate用于处理数据库的CRUD(创建、读取、更新、删除)操作,通过HQL(Hibernate查询语言)或SQL进行数据查询,使得数据库操作更加简洁高效。 Direct Web Remoting(DWR)是一个JavaScript库,它...
Ajax的核心是异步数据交换,它利用JavaScript和XMLHttpRequest对象在后台与服务器通信,无需刷新整个页面。一个典型的Ajax流程包括创建XMLHttpRequest对象、打开连接、发送请求、处理响应。DWR简化了这个过程,提供...
- 它通过在后台与服务器进行少量数据交换,使网页实现异步更新,为用户提供流畅的交互体验。 3. **Struts** - Struts是一个基于MVC设计模式的Java Web应用框架,主要用于构建可扩展的企业级应用。 - 在文件上传...
对于远程数据,通常会使用Ajax请求(DWR或者Ext.Ajax)从服务器获取JSON或XML格式的数据。 更新(Update):当用户修改了数据,Store会自动检测到这些变化。调用`sync()`方法会将更新后的数据发送回服务器,后台...
它支持XPath查询,能够方便地读取和写入XML数据,是Java开发者处理XML文档时常用的库。在1.6.1这个版本中,可能包含了对XPath 1.0的支持,错误处理机制,以及对XML Schema和DTD的支持等特性。 最后,`dwr.jar`是...
DWR使得在浏览器端可以调用服务器端的Java方法,就像它们是本地函数一样,这在处理Excel数据时非常有用,比如使用ExcleTool处理后的数据可以通过DWR直接返回给前端。 结合以上信息,我们可以探讨以下知识点: 1. *...
这个"**DWRselect(附Ant)**.rar"文件很可能包含一个示例项目,演示了如何使用DWR来创建一个AJAX级联下拉框,其中数据是从XML文件中读取的。在这个场景中,用户在一个下拉框的选择会影响到另一个下拉框的内容,这种...
DWR负责后台与前端的通信,jQuery则简化了前端的DOM操作和事件处理,两者结合为开发带来了便利,提升了用户体验。在实际应用中,还需要考虑性能优化、安全性以及跨浏览器兼容性等问题,确保功能的稳定和可靠。
- **异步数据交换**:DWR通过Ajax技术实现后台数据交换,无需刷新整个页面,提高了用户体验。例如,用户输入数据后,可能实时验证输入的有效性,或者在不离开当前页面的情况下加载更多内容。 - **错误处理**:良好...
总结来说,Ext.data是Ext_JS框架中处理数据的核心部分,它提供了强大的数据存储、读取和传输能力。通过灵活的Store、Reader和Proxy机制,开发者可以轻松地从各种数据源获取数据并呈现给用户。同时,Ext.data....