金蝶(kingdee) BOS 开发 UI (CTEx 、PIEx)扩展方法分析

金蝶给我们提供一个可以扩展ui类的方法,就是我们可以建一个后缀为CTEx或者PIEx的类,继承原来的UI类,扩展就会自动先运行我们的扩展类,从而达到功能扩展的目的,下面对该方法进行一个代码分析:

我们在框架里面是通过UIFactory.create来生成IUIWindow 接口的实现,所以我们直接跟踪到一个具体的UIFactory里面去,

例如:UIModelDialogFactory

我们发现在create方法里面又如下代码:IUIObject uiObject = UIFactoryHelper.initUIObject(name, uiContext, dataObjects, oprt);

这个代码就是初始化ui界面类的,再跟踪下去,就可以发现如下代码:

uiObject = AbstractUIFactory.createUIObjectNoInit(name);

再跟踪下去就发现如下代码,一切玄机就在下面,框架会先加载CTEx为后缀的类,如果找不到就加载PIEx的类,如果再找不到才加载原来的类。。

public static IUIObject createUIObjectNoInit(String name)
throws UIException
{
try
{
Class c = null;
try
{
c = Class.forName(name + "CTEx", false, (com.kingdee.bos.ui.face.AbstractUIFactory.class).getClassLoader());
}
catch(ClassNotFoundException ex)
{
try
{
c = Class.forName(name + "PIEx", false, (com.kingdee.bos.ui.face.AbstractUIFactory.class).getClassLoader());
}
catch(ClassNotFoundException _)
{
c = Class.forName(name);
}
}
IUIObject uiObj = (IUIObject)c.newInstance();
return uiObj;
}
catch(Exception e)
{
throw new UIException("Can not create ui object!", e);
}
}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值