`

gwt反射

    博客分类:
  • gwt
阅读更多

GWTENT 1.0 第一个RC版本发布,从本版本开始,所有包结构及主要的接口将会稳定下来。 

  GWTENT 主要为GWT提供反射Reflection,数据绑定(DataBinding),HTML模板,检验支持(Validation)及一个处于早期的AOP实现。 

http://gwt-ent.googlecode.com/files/gwtent.1.0.0.RC1.zip

 

http://code.google.com/p/gwt-ent/

 

http://code.google.com/p/gwt-ent/wiki/UseReflection

 

 

Gwt延迟绑定介绍

Gwt的延迟绑定是一种gwt对反射机制的一种支持方案。简单的说就是在使用gwt进行代码开发的时候,可以使用接口和抽象类,而不用管它的实现,在编译后或者host模式的情况下,gwt会自己跟模块配置的信息来使用具体哪一个实现类替代代码中的接口和抽象类。

使用说明:

1. 定义接口或者抽象类,然后再定义一个实现类。

2. 在xxx.gwt.xml(模块文件中定义)替换的参数信息和具体替换的类

Xml代码 复制代码 收藏代码gwt <wbr>中的延迟绑定
  1. <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla">
  2. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  3. <when-property-is name="user.agent" value="gecko1_8"/>
  4. </replace-with>
<replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="gecko1_8"/> </replace-with>


上面的配置是将在firefox浏览器里面使用DOMImpl该类的地方使用DOMImplMozilla这个类进行替换。其中的replace-with是指实际用到的类,when-type-is则是要替换的类,when-property-is则是一些参数信息,可以添加0到多个。另外,关于参数的配置还可以加一些逻辑的限制,如Any,

Xml代码 复制代码 收藏代码gwt <wbr>中的延迟绑定
  1. <any>
  2. <when-property-is name="user.agent" value="gecko"/>
  3. <when-property-is name="user.agent" value="gecko1_8" />
  4. </any>
<any> <when-property-is name="user.agent" value="gecko"/> <when-property-is name="user.agent" value="gecko1_8" /> </any>



3. 在代码中使用
通过GWT.create方法可以动态的获取不同的实现类,如下:
DOMImpl impl = (DOMImpl) GWT.create(DOMImpl.class);
再结合gwt的dom模块的配置信息(如下),impl对象将会根据不同的浏览器而动态采用不同的domimpl类的实现。

Xml代码 复制代码 收藏代码gwt <wbr>中的延迟绑定
  1. <module>
  2. <inherits name="com.google.gwt.core.Core"/>
  3. <inherits name="com.google.gwt.user.UserAgent"/>
  4. <replace-with class="com.google.gwt.user.client.impl.DOMImplOpera">
  5. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  6. <when-property-is name="user.agent" value="opera"/>
  7. </replace-with>
  8. <replace-with class="com.google.gwt.user.client.impl.DOMImplSafari">
  9. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  10. <when-property-is name="user.agent" value="safari"/>
  11. </replace-with>
  12. <replace-with class="com.google.gwt.user.client.impl.DOMImplIE6">
  13. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  14. <when-property-is name="user.agent" value="ie6"/>
  15. </replace-with>
  16. <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla">
  17. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  18. <when-property-is name="user.agent" value="gecko1_8"/>
  19. </replace-with>
  20. <replace-with class="com.google.gwt.user.client.impl.DOMImplMozillaOld">
  21. <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
  22. <when-property-is name="user.agent" value="gecko"/>
  23. </replace-with>
  24. </module>
<module> <inherits name="com.google.gwt.core.Core"/> <inherits name="com.google.gwt.user.UserAgent"/> <replace-with class="com.google.gwt.user.client.impl.DOMImplOpera"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="opera"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplSafari"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="safari"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplIE6"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="ie6"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="gecko1_8"/> </replace-with> <replace-with class="com.google.gwt.user.client.impl.DOMImplMozillaOld"> <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/> <when-property-is name="user.agent" value="gecko"/> </replace-with> </module>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics