天山涼快

          java分壇

          DWR 用xom,dom4j傳輸Document或者Element數據的小問題。

          作者: ynmc
          原文地址:http://www.aygfsteel.com/ynmc/archive/2006/06/26/55149.html歡迎轉載,請保留出處.

          在用DWR傳輸xml文檔(document)或者節點(Element)的時候,通過DWR Debug頁面從函數中直接取返回數據時,由于DWR對于Firefox的支持度比IE好的原因,在FireFox下面能正常運行,在IE下會報[Ojbect Error]。我用DWR1.1和DWR M2兩個版本都進行了測試,都會報出同樣的錯誤。

          關于這個錯誤,我已經和DWR的作者joe walker通過user-list聯系過,他表示由于時間的問題,在ie下面的確有一些bug沒有來得及處理。

          同時,我又做了一些測試,發現其實這個問題確實如Joe后來回復的郵件所說,是個沒有什么意義的小問題。在IE下其實也是可以傳遞Document或者Element數據的,只是在DWR Debug頁面下,直接從函數中返回Document或者Element時,DWR彈出的顯示元素的對話框。這個時候DWR隱式的將Document或者Element對象轉換成了String,而DWR對FireFox支持的較好,沒有問題,而在IE中就會彈出Object Error錯誤。

          所以對實際應用來講,這個bug完全可以忽略,因為除了debug以外,在使用中沒有任何影響。

          Joe 最后回復了郵件,也給出了處理辦法,他的意思是這種情況出現的比較少,意義不大(我就是聽他說了這句話之后發現了開始自己的理解有誤,看來多與人交流是非常重要的啊。)

          下面是郵件原文:

          From: Joe Walker <joseph.walker@...>
          Subject: Re: Re: [new user]problem: can't send/return DOM object?
          Newsgroups: gmane.comp.java.dwr.user
          Date: 2006-06-26 08:32:37 GMT (1 day and 48 minutes ago)
          Expires: This article expires on 2006-07-10


          The DOM converter will convert from browser DOM objects to server side DOM objects, but it wasn't designed to convert from browser strings to SS DOM.

          How do you parse a browser string into a browser DOM?

          This can't be done without some cross-browser tweaks. Take a look at DWREngine._unserializeDocument(). It is a private method to DWREngine, so you should not use it directly, but you can copy it.

          DWREngine._unserializeDocument = function(xml) {
          ? var dom;
          ? if (window.DOMParser) {
          ??? var parser = new DOMParser();
          ??? dom = parser.parseFromString(xml, "text/xml");
          ??? if (!dom.documentElement || dom.documentElement.tagName == "parsererror") {
          ????? var message = dom.documentElement.firstChild.data;
          ????? message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data;
          ????? throw message;
          ??? }
          ??? return dom;
          ? }
          ? else if ( window.ActiveXObject) {
          ??? dom = DWREngine._newActiveXObject(DWREngine._DOMDocument);
          ??? dom.loadXML(xml);
          ??? // What happens on parse fail with IE?
          ??? return dom;
          ? }
          ? else {
          ??? var div = document.createElement ('div');
          ??? div.innerHTML = xml;
          ??? return div;
          ? }
          };

          There is bug in IE is that I mentioned in a previous post. The bug is that HTML nodes do not have the DOM properties to allow DWR to marshall them properly. This might be something that DWR can work around, but to date I have never seen the need to fix the bug. Sending the browser HTML DOM to the server isn't all that useful since the server gave it to the browser in the first place.

          Joe.


          目前的ajax框架中DWR的文檔是做的比較好的,這也有利于廣大的開發者。
          DWR 官方站點:
          http://getahead.ltd.uk/dwr/

          DWR User-list(作者會經常對在這里提出的問題進行回答,目前已經有約5000條記錄):
          http://news.gmane.org/gmane.comp.java.dwr.user

          最后感謝Joe Walker,他不僅寫出了DWR,還非常熱心的回答了我和其它user的問題。

          posted on 2006-06-26 14:27 Ynmc 閱讀(2325) 評論(3)  編輯  收藏 所屬分類: Ajax

          評論

          # re: DWR 用xom,dom4j傳輸xml數據的Bug。 2006-06-26 16:13 charon@xxx

          其實如果要用到xml的話,不必使用dwr的。不過dwr確實是個好東西。  回復  更多評論   

          # re: DWR 用xom,dom4j傳輸xml數據的Bug。 2006-06-27 08:37 我心飛翔

          我剛接觸ajax,日后還得多請教你。  回復  更多評論   

          # re: DWR 用xom,dom4j傳輸xml數據的Bug。 2006-06-27 17:00 Ynmc

          其實xml只是為傳輸數據定義格式,我們做web應用的時候,主要是看中它對httpservlet的封裝和前臺代碼的簡化,另外dwr提供的DWRUtil.js功能也不錯.
          不過charon說的的確沒有,如果自己寫一點servlet再加上xml傳輸,是可以丟掉dwr的,這樣還精簡一些.

          to 我心飛翔:
          大家一起交流,我也是newbie,菜菜仔一個.  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統計

          常用鏈接

          留言簿(1)

          我參與的團隊

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 申扎县| 勐海县| 施秉县| 巫溪县| 高尔夫| 九台市| 三台县| 东兰县| 东源县| 化隆| 和硕县| 韩城市| 汉中市| 崇义县| 黑河市| 静宁县| 来安县| 南和县| 江门市| 溧水县| 禄丰县| 兰西县| 贵阳市| 芮城县| 柘荣县| 太仆寺旗| 吉木萨尔县| 贺兰县| 巴林左旗| 府谷县| 威宁| 娄烦县| 吉首市| 恩施市| 丰都县| 清远市| 沙洋县| 鸡东县| 杭锦旗| 安新县| 德钦县|