本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7585850
建立时间:2006年5月29日




[DWR(Ajax)]读了遍DWR1.1官方文档,提取的些东西
软件技术

lhwork 发表于 2006/7/10 10:29:54

1、java的方法避免用 java 和 javascript的关键字。 如 try()方法 或 delete()方法。 2、在你的java类中不要出现重载 avoid overloaded methods. 3、 在生产环境下,你可以把deprecated.js engine.js util.js 合并成一个,并放到web容器内,直接在htm,jsp中引用。 (对于java代码转换成的javascript代码也可以这么做,免得每次生成javascript代码浪费时间) 4、研究一下Bean Converters。POJOjava对象必须严格按照 getProperty() setProperty()定义。Bean Converters是按照 java对象的 get set方法工作的。DWR1.1加了Object Converters,是按private int property;这类属性工作的。 <convert converter="bean" match="example.Fred"/> <param name="exclude" value="property1, property2"/> </convert> 当你这样配置时,java对象转化成的javascript对象不包括property1和property2。 <convert converter="bean" match="example.Fred"/> <param name="include" value="property1, property2"/> </convert> 反过来java对象转化成的javascript对象直包括property1和property2。 5、<convert converter="collection" match="java.util.Collection"/> <convert converter="map" match="java.util.Map"/> 这也是容易出问题的地方. 如 package example; public class Person{ private String name; get ... set private List relationPerson; public List setRelationPerson(List relationPerson){ this.relationPerson=relationPerson; } } <convert converter="bean" match="example.Person"/> </convert> <signatures> <![CDATA[ import java.util.Set; import example.Person; Person.setRelationPerson(List<Person>); ]]> </signatures> 在jdk1.5泛型中有写法区别 6、另外在Set,List等做为方法参数时也会出现混淆。返回集合类型不会出现问题,想想就知道了。 如 在Test类中有 public Set testBeanSetParam(Set test) 这个方法,客户端得到的javascript方法可能是Test.testBeanSetParam(p0,callback);当我们 javascript调用这个方法时,鬼才知道怎么确定p0的类型,也不可能知道Set集合中该放什么类型的java对象,所以dwr的 special signatures syntax 确定这些集合和内容的类型 <signatures> <![CDATA[ import java.util.Set; import example.Test; Test.testBeanSetParam(Set<TestBean>); <!--Test.stringStringMapParam(Map<String, String>);--> ]]> </signatures> 7、Creators <allow> <create creator="..." javascript="..." scope="..."> <param name="..." value="..."/> <auth method="..." role="..."/> <exclude method="..."/> <include method="..."/> </create> ... </allow> 为了更少的暴露业务方法,最好配置include属性。 dwr支持new ,script,struts....几种集成方法,也支持static方法的调用,我觉得最好的是spring,其他感觉是处理遗留问题处理。 8、engine_js 作为dwr框架客户端核心,主要完成xmlHttp或iframe的构造,我们没必要关心它如何实现。有几点创新的我们可以学习下。 Call Batching 我们可以把几个客户端请求一起放送到服务器端,减少了网络交互,但要注意依存关系和他们处理的顺序。 Call Ordering 同步异步调整。一般用默认的就好了。注意依存关系。 Remoting Hooks 钩子,"small AOP" 依存关系解释。 如果 request1() request2()两个业务逻辑方法,request2方法需要用到request1方法从服务器端返回的结果。如果调用request2时,request1还没处理或还没请求。 下拉框连动可能有这个问题。 9、util.js propotype.js有些重复,这让我很难受。只能改代码了,可别坏了开元协议。 10、如果你的回调方法想加其他参数 var dataFromBrowser = ...; var callbackProxy = function(dataFromServer) { callbackFunc(dataFromServer, dataFromBrowser); }; var callMetaData = { callback:callbackProxy }; Remote.method(params, callMetaData); 11、dwr1.1 1.1只能算一个bug消除版本,没有什么大的功能调整。源代码结构做了些调整。2.0有新的特征加入。 It has a far broader scope; the major new features are accessibility enhancements, and what now appears to be called 'Comet'. 在文档中提到了“Comet”,估计与DWR2.0作者想法类似。 http://forum.javaeye.com/viewtopic.php?t=19089楼主叫server push。 http://alex.dojotoolkit.org/?p=545 给正名了,叫 Comet


阅读全文(2291) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144766652 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号