GXT3.0变化太大,不仅仅是对UiBinder的支持,包括MVP开发模式等等
今天做了一下简单的测试,发现很多之前GXT2.x的代码都跑不起来,主要的原因是sencha将com.extjs.gxt.**修改为了com.sencha.gxt.**,看来sencha是要和extjs彻底划清界限,不知道GPL的版本还有没有得前途
在测试过程中,首先碰到的就是user.agent问题,为了开发期间编译速度优化,我一般都只设置为safair
<set-property name="user.agent" value="safari" />
但是,改为GXT3之后,直接报错
配置文件:
<module rename-to='test'> <inherits name='com.sencha.gxt.ui.GXT' /> <inherits name="com.google.gwt.i18n.I18N" /> <set-property name="gxt.user.agent" value="safari" /> <entry-point class="com.strong.gxt.test.client.TestLayout" /> </module>
错误代码:
[ERROR] The value safari was not previously defined.
[ERROR] Line 5: Unexpected exception while processing element 'set-property'
理论上user.agent是GWT的设置,为什么到了GXT3里面还报错?于是跟着com.sencha.gxt.ui.GXT往下找,发现Core.gwt.xml的代码如下:
....................... <!-- Add more user agents and redefine how one is selected --> <define-property name="gxt.user.agent" values="ie6" /> <extend-property name="gxt.user.agent" values="ie7" /> <extend-property name="gxt.user.agent" values="ie8" /> <extend-property name="gxt.user.agent" values="ie9" /> <extend-property name="gxt.user.agent" values="opera" /> <extend-property name="gxt.user.agent" values="gecko1_8" /> <extend-property name="gxt.user.agent" values="gecko1_9" /> <extend-property name="gxt.user.agent" values="safari3" /> <extend-property name="gxt.user.agent" values="safari4" /> <extend-property name="gxt.user.agent" values="safari5" /> <extend-property name="gxt.user.agent" values="chrome" /> <extend-property name="gxt.user.agent" values="air" /> <!-- Decide which GXT user.agent setting to apply --> <property-provider name="gxt.user.agent" generator="com.sencha.gxt.core.rebind.useragent.UserAgentPropertyGenerator" /> <!-- Restrict the permutation explosion --> <set-property name="user.agent" value="ie6"> <any> <when-property-is name="gxt.user.agent" value="ie6" /> <when-property-is name="gxt.user.agent" value="ie7" /> </any> </set-property> <set-property name="user.agent" value="ie8"> <when-property-is name="gxt.user.agent" value="ie8" /> </set-property> <set-property name="user.agent" value="ie9"> <when-property-is name="gxt.user.agent" value="ie9" /> </set-property> <set-property name="user.agent" value="gecko1_8"> <any> <when-property-is name="gxt.user.agent" value="gecko1_8" /> <when-property-is name="gxt.user.agent" value="gecko1_9" /> </any> </set-property> <set-property name="user.agent" value="safari"> <any> <when-property-is name="gxt.user.agent" value="safari3" /> <when-property-is name="gxt.user.agent" value="safari4" /> <when-property-is name="gxt.user.agent" value="safari5" /> <when-property-is name="gxt.user.agent" value="air" /> <when-property-is name="gxt.user.agent" value="chrome" /> </any> </set-property> <set-property name="user.agent" value="opera"> <when-property-is name="gxt.user.agent" value="opera" /> </set-property> .......................
原来,GXT3把user.agent全部转成了gxt.user.agent,对应的值在里面都有,于是修改XML为:
<module rename-to='test'> <inherits name='com.sencha.gxt.ui.GXT' /> <inherits name="com.google.gwt.i18n.I18N" /> <set-property name="gxt.user.agent" value="safari3" /> <entry-point class="com.strong.gxt.test.client.TestLayout" /> </module>
于是,编译情况正常。总结:GXT3变化挺大,按照sencha的传统,新版本出来肯定bug很多,小的修改版本肯定马上跟进,建议大家可以测试一下GXT3,正式使用还请观望