当前位置: 首页 > 工具软件 > Sencha GXT > 使用案例 >

GXT3.0学习笔记(一)user.agent的变化

鄢禄
2023-12-01

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,正式使用还请观望

 类似资料: