1、java的方法避免用 java 和 javascript的關(guān)鍵字。 如 try()方法 或 delete()方法。 2、在你的java類中不要出現(xiàn)重載 avoid overloaded methods. 3、
在生產(chǎn)環(huán)境下,你可以把deprecated.js engine.js util.js
合并成一個,并放到web容器內(nèi),直接在htm,jsp中引用。
(對于java代碼轉(zhuǎn)換成的javascript代碼也可以這么做,免得每次生成javascript代碼浪費時間) 4、研究一下Bean
Converters。POJOjava對象必須嚴(yán)格按照 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> 當(dāng)你這樣配置時,java對象轉(zhuǎn)化成的javascript對象不包括property1和property2。 <convert converter="bean" match="example.Fred"/> <param name="include" value="property1, property2"/> </convert> 反過來java對象轉(zhuǎn)化成的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泛型中有寫法區(qū)別
6、另外在Set,List等做為方法參數(shù)時也會出現(xiàn)混淆。返回集合類型不會出現(xiàn)問題,想想就知道了。 如
在Test類中有 public Set testBeanSetParam(Set test)
這個方法,客戶端得到的javascript方法可能是Test.testBeanSetParam(p0,callback);當(dāng)我們
javascript調(diào)用這個方法時,鬼才知道怎么確定p0的類型,也不可能知道Set集合中該放什么類型的java對象,所以dwr的
special signatures syntax 確定這些集合和內(nèi)容的類型 <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> 為了更少的暴露業(yè)務(wù)方法,最好配置include屬性。 dwr支持new ,script,struts....幾種集成方法,也支持static方法的調(diào)用,我覺得最好的是spring,其他感覺是處理遺留問題處理。 8、engine_js 作為dwr框架客戶端核心,主要完成xmlHttp或iframe的構(gòu)造,我們沒必要關(guān)心它如何實現(xiàn)。有幾點創(chuàng)新的我們可以學(xué)習(xí)下。 Call Batching 我們可以把幾個客戶端請求一起放送到服務(wù)器端,減少了網(wǎng)絡(luò)交互,但要注意依存關(guān)系和他們處理的順序。 Call Ordering 同步異步調(diào)整。一般用默認(rèn)的就好了。注意依存關(guān)系。 Remoting Hooks 鉤子,"small AOP" 依存關(guān)系解釋。 如果 request1() request2()兩個業(yè)務(wù)邏輯方法,request2方法需要用到request1方法從服務(wù)器端返回的結(jié)果。如果調(diào)用request2時,request1還沒處理或還沒請求。 下拉框連動可能有這個問題。 9、util.js propotype.js有些重復(fù),這讓我很難受。只能改代碼了,可別壞了開元協(xié)議。 10、如果你的回調(diào)方法想加其他參數(shù) var dataFromBrowser = ...; var callbackProxy = function(dataFromServer) { callbackFunc(dataFromServer, dataFromBrowser); }; var callMetaData = { callback:callbackProxy }; Remote.method(params, callMetaData); 11、dwr1.1 1.1只能算一個bug消除版本,沒有什么大的功能調(diào)整。源代碼結(jié)構(gòu)做了些調(diào)整。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
|
|
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
26 | 27 | 28 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
常用鏈接
留言簿(31)
我參與的團隊
隨筆分類(45)
隨筆檔案(40)
blogs
ruby開始
國內(nèi)js的一些鏈接
每日逛逛
最新隨筆
最新評論

閱讀排行榜
評論排行榜
|
|