- 浏览: 232475 次
- 性别:
- 来自: 深圳
文章分类
最新评论
在前人的基础上更改的DWRProxy
修改的地方:
1.多个DWR同时调用不受限制
2.调用DWR的方法的参数不做限制,可以任意。
3.增加EXT常用的几个Reader的实现:Ext.data.XmlReader Ext.data.JsonReader Ext.data.DWRArrayReader
/* @author:Condy @createDate:2008-01-14 Ext.data.DWRProxy(DWR的调用方法,调用方法的输入参数) example: 1.use DWRJsonReader: var store=new Ext.data.Store({ proxy:new Ext.data.DWRProxy(DWRCall.getComboJsonByObject,"condy",{name:'condy',address:'xxxx',age:26}), reader:new Ext.data.DWRJsonReader({ totalProperty: "results", root: "rows", id: "id" },new Ext.data.Record.create([ {name: 'text', mapping: 'name'}, {name: 'value',mapping:'occupation'} ])) }); java code: public String getComboJsonByObject(String param1,DWRObject dwrobject){ System.out.println("param1:"+param1); System.out.println("DWRObject: name:"+dwrobject.getName()+" age:"+dwrobject.getAge()); StringBuffer sb=new StringBuffer(); sb.append("{ 'results': 2, 'rows': ["); sb.append("{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },"); sb.append("{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]"); sb.append("}"); System.out.println(sb.toString()); return sb.toString(); } 2. use DWRArrayReader: var store=new Ext.data.Store({ proxy:new Ext.data.DWRProxy(DWRCall.getComboArray,"condy"), reader:new Ext.data.DWRArrayReader({ },new Ext.data.Record.create([ {name: 'text', mapping: 0}, {name: 'value',mapping:1} ])) }); java code: public String[][] getComboArray(String id){ System.out.println("id:"+id); String[][] aaData={new String[]{"aaa","111"},new String[]{"bbb","222"}}; return aaData; } 3. use DWRXmlReader: store=new Ext.data.Store({ proxy:new Ext.data.DWRProxy(DWRCall.getComboArray,"condy"), reader:new Ext.data.DWRArrayReader({ },new Ext.data.Record.create([ {name: 'text', mapping: 0}, {name: 'value',mapping:1} ])) }); java code: public String getComboXml(String param1,String param2){ System.out.println("param1:"+param1); System.out.println("param2:"+param2); StringBuffer sbxml=new StringBuffer(); sbxml.append("<?xml version=\"1.0\" encoding=\"GBK\"?>\n"); sbxml.append("<dataset>\n"); sbxml.append("<results>2</results>\n"); sbxml.append("<row>\n"); sbxml.append("<id>1</id>\n"); sbxml.append("<name>Bill</name>\n"); sbxml.append("<occupation>Gardener</occupation>\n"); sbxml.append("</row>\n"); sbxml.append("<row>\n"); sbxml.append("<id>2</id>\n"); sbxml.append("<name>Condy</name>\n"); sbxml.append("<occupation>Horticulturalist</occupation>\n"); sbxml.append("</row>\n"); sbxml.append("</dataset>\n"); System.out.println(sbxml.toString()); return sbxml.toString(); } */ Ext.data.DWRProxy = function(dwrCall){ Ext.data.DWRProxy.superclass.constructor.call(this); this.dwrCall = dwrCall; /** 传入多个输入参数的处理**/ this.callParams = new Array(); for( i=1;i<arguments.length;i++){ this.callParams.push(arguments[i]); } }; Ext.extend(Ext.data.DWRProxy, Ext.data.DataProxy, { load : function(params, reader, callback, scope, arg) { if(this.fireEvent("beforeload", this, params) !== false) { var delegate = this.loadResponse.createDelegate(this, [reader, callback, scope, arg], 1); this.callParams.push(delegate); this.dwrCall.apply(this, this.callParams); } else { callback.call(scope || this, null, arg, false); } }, loadResponse : function(dwrResult, reader, callback, scope, arg) { var result; try { result = reader.read(dwrResult); } catch(e) { this.fireEvent("loadexception", this, null, dwrResult, e); callback.call(scope, null, arg, false); return; } callback.call(scope, result, arg, true); } }); /* * *DWR调用方法返回的格式json *参数调用格式与 Ext.data.JsonReader是一样的 请查看Ext的api文档 */ Ext.data.DWRJsonReader=function(meta,recordType){ Ext.data.DWRJsonReader.superclass.constructor.call(this,meta,recordType); }; Ext.extend(Ext.data.DWRJsonReader,Ext.data.JsonReader,{ read : function(response){ if(typeof response == 'object') alert("object"); var o = eval("("+response+")"); if(!o) { throw {message: "JsonReader.read: Json object not found"}; } if(o.metaData){ delete this.ef; this.meta = o.metaData; this.recordType = Ext.data.Record.create(o.metaData.fields); this.onMetaChange(this.meta, this.recordType, o); } return this.readRecords(o); } }); /* *返回数组格式:[[xxx,yyy],[aaaa],[bbbb]] *参数调用格式与 Ext.data.ArrayReader是一样的,请查看Ext的api文档 */ Ext.data.DWRArrayReader=function(meta,recordType){ Ext.data.DWRArrayReader.superclass.constructor.call(this,meta,recordType); }; Ext.extend(Ext.data.DWRArrayReader,Ext.data.ArrayReader,{ read : function(response){ var o = response; if(!o) { throw {message: "JsonReader.read: Json object not found"}; } if(o.metaData){ delete this.ef; this.meta = o.metaData; this.recordType = Ext.data.Record.create(o.metaData.fields); this.onMetaChange(this.meta, this.recordType, o); } return this.readRecords(o); } }); /* * *DWR调用方法返回的格式XML *参数调用格式与 Ext.data.XmlReader是一样的 请查看Ext的api文档 */ Ext.data.DWRXmlReader=function(meta,recordType){ Ext.data.DWRXmlReader.superclass.constructor.call(this,meta,recordType); }; Ext.extend(Ext.data.DWRXmlReader,Ext.data.XmlReader,{ read : function(response){ var doc; try{ if(Ext.isIE || Ext.isIE7){ doc=new ActiveXObject("Microsoft.XMLDOM"); doc.loadXML(response); }else{ var oParser=new DOMParser(); doc=oParser.parseFromString(response,"text/xml"); } }catch(e){ alert(e); } if(!doc) { throw {message: "DWRXmlReader.read: XML Document not available"}; } return this.readRecords(doc); } });
调用示例:
combo.html 代码
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <metahttp-equiv="Content-Type"content="text/html;charset=GBK">
- <linkrel="stylesheet"type="text/css"href="../js/extjs/resources/css/ext-all.css"/>
- <scripttype='text/javascript'src='/dwr/dwr/interface/DWRCall.js'></script>
- <scripttype='text/javascript'src='/dwr/dwr/engine.js'></script>
- <scripttype="text/javascript"src="../js/extjs/adapter/ext/ext-base.js"></script>
- <scripttype="text/javascript"src="../js/extjs/ext-all-debug.js"></script>
- <scripttype="text/javascript"src="../js/extjs/ext-lang-zh_CN.js"></script>
- <scripttype="text/javascript"src="../js/extjs/DWRProxy.js"></script>
- <scripttype="text/javascript"src="comboxTest.js"></script>
- <title>Combo对象学习</title>
- <scripttype="text/javascript">
- </script>
- </head>
- <body>
- <inputtype='button'onclick='alert(Ext.get("local-states").getValue());'value='store.getCount())'>
- <div>
- <inputtype='text'id='local-states'></input>
- </div>
- </body>
- </html>
comboxTest.js代码:
- varstore;
- Ext.onReady(function(){
java部分代码:
DWRCall.java
- packagecom.test;
- publicclassDWRCall{
- publicStringgetCombo(Stringid){
- System.out.println("bbbbbbbbbbbbbbbb");
- StringBuffersb=newStringBuffer();
- sb.append("[[").append("'condy','name'],['candy','name']]");
- System.out.println(sb.toString());
- returnsb.toString();
- }
- publicString[][]getComboArray(Stringid){
- System.out.println("id:"+id);
- String[][]aaData={newString[]{"aaa","111"},newString[]{"bbb","222"}};
- returnaaData;
- }
- publicStringgetComboJson(Stringparam1,Stringparam2){
- System.out.println("param1:"+param1);
- System.out.println("param2:"+param2);
- StringBuffersb=newStringBuffer();
- sb.append("{'results':2,'rows':[");
- sb.append("{'id':1,'name':'Bill',occupation:'Gardener'},");
- sb.append("{'id':2,'name':'Ben',occupation:'Horticulturalist'}]");
- sb.append("}");
- System.out.println(sb.toString());
- returnsb.toString();
- }
- publicStringgetComboXml(Stringparam1,Stringparam2){
- System.out.println("param1:"+param1);
- System.out.println("param2:"+param2);
- StringBuffersbxml=newStringBuffer();
- sbxml.append("<?xmlversion=\"1.0\"encoding=\"GBK\"?>\n");
- sbxml.append("<dataset>\n");
- sbxml.append("<results>2</results>\n");
- sbxml.append("<row>\n");
- sbxml.append("<id>1</id>\n");
- sbxml.append("<name>Bill</name>\n");
- sbxml.append("<occupation>Gardener</occupation>\n");
- sbxml.append("</row>\n");
- sbxml.append("<row>\n");
- sbxml.append("<id>2</id>\n");
- sbxml.append("<name>Condy</name>\n");
- sbxml.append("<occupation>Horticulturalist</occupation>\n");
- sbxml.append("</row>\n");
- sbxml.append("</dataset>\n");
- System.out.println(sbxml.toString());
- returnsbxml.toString();
- }
- publicStringgetComboJsonByObject(Stringparam1,DWRObjectdwrobject){
- System.out.println("param1:"+param1);
- System.out.println("DWRObject:name:"+dwrobject.getName()+"age:"+dwrobject.getAge());
- StringBuffersb=newStringBuffer();
- sb.append("{'results':2,'rows':[");
- sb.append("{'id':1,'name':'Bill',occupation:'Gardener'},");
- sb.append("{'id':2,'name':'Ben',occupation:'Horticulturalist'}]");
- sb.append("}");
- System.out.println(sb.toString());
- returnsb.toString();
- }
- }
package com.test; public class DWRCall { public String getCombo(String id){ System.out.println("bbbbbbbbbbbbbbbb"); StringBuffer sb=new StringBuffer(); sb.append("[[").append("'condy','name'],['candy','name']]"); System.out.println(sb.toString()); return sb.toString(); } public String[][] getComboArray(String id){ System.out.println("id:"+id); String[][] aaData={new String[]{"aaa","111"},new String[]{"bbb","222"}}; return aaData; } public String getComboJson(String param1,String param2){ System.out.println("param1:"+param1); System.out.println("param2:"+param2); StringBuffer sb=new StringBuffer(); sb.append("{ 'results': 2, 'rows': ["); sb.append("{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },"); sb.append("{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]"); sb.append("}"); System.out.println(sb.toString()); return sb.toString(); } public String getComboXml(String param1,String param2){ System.out.println("param1:"+param1); System.out.println("param2:"+param2); StringBuffer sbxml=new StringBuffer(); sbxml.append("<?xml version=\"1.0\" encoding=\"GBK\"?>\n"); sbxml.append("<dataset>\n"); sbxml.append("<results>2</results>\n"); sbxml.append("<row>\n"); sbxml.append("<id>1</id>\n"); sbxml.append("<name>Bill</name>\n"); sbxml.append("<occupation>Gardener</occupation>\n"); sbxml.append("</row>\n"); sbxml.append("<row>\n"); sbxml.append("<id>2</id>\n"); sbxml.append("<name>Condy</name>\n"); sbxml.append("<occupation>Horticulturalist</occupation>\n"); sbxml.append("</row>\n"); sbxml.append("</dataset>\n"); System.out.println(sbxml.toString()); return sbxml.toString(); } public String getComboJsonByObject(String param1,DWRObject dwrobject){ System.out.println("param1:"+param1); System.out.println("DWRObject: name:"+dwrobject.getName()+" age:"+dwrobject.getAge()); StringBuffer sb=new StringBuffer(); sb.append("{ 'results': 2, 'rows': ["); sb.append("{ 'id': 1, 'name': 'Bill', occupation: 'Gardener' },"); sb.append("{ 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]"); sb.append("}"); System.out.println(sb.toString()); return sb.toString(); } }
DWRObject.java
- packagecom.test;
- publicclassDWRObject{
- privateStringname;
- privateStringaddress;
- privateintage;
- /**
- *@returntheaddress
- */
- publicStringgetAddress(){
- returnaddress;
- }
- /**
- *@paramaddresstheaddresstoset
- */
- publicvoidsetAddress(Stringaddress){
- this.address=address;
- }
- /**
- *@returntheage
- */
- publicintgetAge(){
- returnage;
- }
- /**
- *@paramagetheagetoset
- */
- publicvoidsetAge(intage){
- this.age=age;
- }
- /**
- *@returnthename
- */
- publicStringgetName(){
- returnname;
- }
- /**
- *@paramnamethenametoset
- */
- publicvoidsetName(Stringname){
- this.name=name;
- }
- }
相关推荐
DWRProxy.js在ExtJS中的作用主要体现在数据绑定和远程调用上。ExtJS是一个强大的JavaScript组件库,提供了丰富的UI组件和数据管理工具。当结合DWRProxy.js时,ExtJS的数据模型能够直接与服务器进行交互,获取和更新...
理解这些核心概念并结合实际的"DWRProxy.js"代码,我们可以深入学习如何在ExtJS应用程序中有效利用DWRProxy来实现与服务器的高效通信,从而提升用户体验。同时,DWRProxy结合源码阅读,可以帮助开发者更好地理解和...
例如,你可以使用DWRproxy加载服务器端的数据到GridPanel,用户在前端对数据进行修改后,再通过DWRproxy将更新的数据提交回服务器。 总结来说,DWRproxy是EXT框架中一个强大的通信工具,它简化了前端与服务器之间的...
ExtJs中使用dwrproxy,和json来处理从数据库...数据库方面,该项目里用的是mysql,数据文件在war包里的db文件夹下,将其导入到test数据库里就可以了 这里的数据库用户名与密码都是root,如果不一样的话,请自行修改。
这个例子中有登录,有...表格中的数据是通过DWRProxy加载共分3中形式,用以下3中解析器来解析的: DWRJsonReader DWRArrayReader DWRXmlReader 数据完全由JAVA方法返回,由DWR动态调用,利用了Spring作为Bean的容器。
在实际应用中,"dwrproxy.js"通常会被引入页面,为其他DWR组件提供基础支持。 **3. ExtJS** ExtJS是一个JavaScript UI库,用于创建功能丰富的、响应式的Web应用。它提供了大量的组件,如表格、窗体、面板等,以及...
dwrProxy.js
EXTJS 3 整合DWR (DWRProxy、DWRTreeLoader、DWRGridProxy) 是一个在EXTJS 3.0版本中实现的重要技术整合,它将DWR(Direct Web Remoting)的强大功能引入到EXTJS的前端框架中,以实现更高效的数据交互。EXTJS是一个...
通过使用这个文件,开发者可以在界面上实时地添加、删除、修改树节点,提供用户友好的操作体验。 最后,`PagingDWRProxy.js`是DWR的分页代理,专为处理大量数据而设计。在现代Web应用中,当处理大量数据时,分页是...
4. **EXT3.0测试通过**: 这表明这些扩展已经在ExtJs 3.0版本上进行了充分的测试,证明了它们的兼容性和稳定性。ExtJs 3.0是一个成熟的版本,提供了丰富的组件和功能,广泛应用于企业级开发。 在实际应用中,这些...
EXT+DWR分页 ,前人基础修改,绝对能用 有问题的大家相互交流, 具体使用请参考我的文章EXT+DWR分页
Ext扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxyExt扩展dwrproxy
在这个例子中,我们创建了一个使用DWRProxy的Store,DWRProxy允许我们在后台Java方法和前端JavaScript之间进行透明的数据交换。DWR方法`YourDWRMethod`应该接受分页参数(start和limit),并返回包含数据和总记录数...
dwrproxy.js 博文链接:https://cicada-it.iteye.com/blog/102949
extjs中用dwr请求数据之后用于进行分页的插件
用EXT和DWR结合起来做工程时,在数据传输时会有点麻烦,这里提供的3个JS文件分别实现了DWR的数据代理,分页查询处理,动态树加载。并且实现了Ext.data.DWRArrayReader Ext.data.DWRXmlReader Ext.data....
该工程在MyEclipse中可以无错的导入,带jar包,带数据库建表语句(包括插入...是在以前发的一个例子的基础上增加了数据库,数据不是硬编码的,使用了Hibernate.页面的原型则利用刘长炯老师的例子,这里感谢刘长炯老师!
本主题将深入探讨如何在ExtJS中使用DWR的代理(DWRProxy)以及树结构加载器(DWRTreeLoader),以便于在ExtJS组件,特别是树形控件中有效地利用DWR的功能。 首先,让我们了解DWRProxy。DWRProxy是ExtJS中用于与DWR...