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

          dwr.xml中的簽名(Signatures)

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

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

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

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

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

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

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

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

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

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

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

          不需要signatures - 沒有泛型參數(shù):

          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可以通過運(yùn)行時類型確定:

          public List<Date> method(String p);

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



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

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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 江口县| 雷州市| 毕节市| 双桥区| 勐海县| 阳江市| 尚义县| 阳新县| 伊金霍洛旗| 卢湾区| 盐城市| 泾川县| 仙游县| 亚东县| 庆元县| 修水县| 霞浦县| 清徐县| 依安县| 微山县| 朔州市| 崇仁县| 汪清县| 嘉鱼县| 双柏县| 灌南县| 革吉县| 蚌埠市| 彰化县| 犍为县| 明水县| 安乡县| 鲁山县| 通渭县| 万载县| 潮州市| 隆子县| 大埔区| 西城区| 秦皇岛市| 镇雄县|