數據加載中……
          dwr.xml中的簽名(Signatures) DWR中文文檔
          【轉】dwr.xml中的簽名(Signatures) DWR中文文檔 from http://wiki.javascud.org
          2007-12-28 14:10

          dwr.xml中的簽名(Signatures)

          signatures段使DWR能確定集合中存放的數據類型。例如下面的定義中我們無法知道list中存放的是什么類型。

          public class Check
                      {
                      public void setLotteryResults(List nos)
                      {
                      ...
                      }
                      }

          signatures段允許我們暗示DWR應該用什么類型去處理。格式對以了解JDK5的泛型的人來說很容易理解。

          <signatures>
                      <![CDATA[
                      import java.util.List;
                      import com.example.Check;
                      Check.setLotteryResults(List<Integer> nos);
                      ]]>
                      </signatures>

          DWR中又一個解析器專門來做這件事,所以即便你的環境時JDK1.3 DWR也能正常工作。

          解析規則基本上會和你預想規則的一樣(有兩個例外),所以java.lang下面的類型會被默認import。

          第一個是DWR1.0中解析器的bug,某些環境下不能返回正確類型。所以你也不用管它了。

          第二個是這個解析器時"陽光(sunny day)"解析器。就是說它非常寬松,不想編譯器那樣嚴格的保證你一定正確。所以有時它也會允許你丟失import:

          <signatures>
                      <![CDATA[
                      import java.util.List;
                      Check.setLotteryResults(List<Integer>);
                      ]]>
                      </signatures>

          將來的DWR版本會使用一個更正式的解析器,這個編譯器會基于官方Java定義,所以你最好不要使用太多這個不嚴格的東西。

          signatures段只是用來確定泛型參數中的類型參數。DWR會自己使用反射機制或者運行時類型確定類型,或者假設它是一個String類型。所以:

          不需要signatures - 沒有泛型參數:

          public void method(String p);
                      public void method(String[] p);

          需要signatures - DWR不能通過反射確定:

          public void method(List<Date> p);
                      public void method(Map<String, WibbleBean> p);

          不需要signatures - DWR能正確的猜出:

          public void method(List<String> p);
                      public void method(Map<String, String> p);

          不需要signatures - DWR可以通過運行時類型確定:

          public List<Date> method(String p);

          沒有必要讓Javascript中的所有對象的key都是String類型 - 你可以使用其他類型作為key。但是他們在使用之前會被轉換成String類型。DWR1.x用Javascript的特性把key轉換成String。DWR2.0可能會用toString()方法,在服務段進行這一轉換。



          ---------------------------------------------------------------------------------------
          ——使你疲勞的不是遠方的高山,而是你鞋里一粒沙子!

          posted on 2009-03-16 08:52 鋒行 閱讀(1418) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 阜宁县| 郯城县| 长治市| 十堰市| 昭觉县| 大兴区| 合山市| 宽城| 阜新市| 巫溪县| 施甸县| 合作市| 阿克陶县| 哈密市| 祁连县| 乌兰县| 莫力| 老河口市| 尖扎县| 绥江县| 从化市| 扬州市| 沧州市| 钦州市| 长春市| 邻水| 华安县| 商洛市| 池州市| 湟源县| 民县| 旬阳县| 汪清县| 碌曲县| 鸡泽县| 静安区| 资兴市| 平乐县| 新邵县| 米易县| 东方市|