扩展标准的ControllerBean和FacadeControllerBean
WEB框架前端一共有两个提示的组件,浮动提示和弹出提示。有时碰到不知哪里弹了个窗或者多次弹窗的问题,掌握一定的调试技巧是必要的。
- 实体的ControllerBean
- 一般调用实体相关的功能方法用XXXFactory. getLocalInstance(context).doSomething();
- 然而实体控制器一般的继承关系是:XXXControllerBean -> AbstractXXXControllerBean -> XXXController
- 所以,如果要扩展doSomething方法,一般要继承XXXControllerBean然后重写其doSomething方法(一般方法前面要加个下划线,写的时候要仔细观察加不加下划线)
- 但是,直接新建扩展XXXControllerBeanEx是不行的,程序还是会走XXXControllerBean的方法,这是由于XXX.getController拿到的还是原本的ControllerBean
- 解决办法是去DEP里设置实体的属性,加上扩展变量controllerBeanEx,设置值为com.kingdee.eas.custom.app.XXXControllerBeanEx
在wafmsgarea.js的show()方法内打断点。
- 弹出提示
- 功能的扩展跟上面情况一下,只不过它不能在DEP中设置相关的扩展属性。这个时候要通过BOS工具,勾选相应的Façade的“使用扩展实现”属性,然后其源代码XML会生成相应的节点信息
- 有些标准的Façade并没有勾选这个属性,但是我们又不能编辑标准相关的元数据,这个时候可以自己找到相关的元数据文件,手动修改元数据加上上述节点,然后做成私包部署到环境上去
*特别要注意的一点是扩展的名称一般是原类后加上Ex这两个字母,不要改成其他的。
*元数据私包文件部署路径:
- \eas\Server\server\metas\sp
- \eas\Server\server\deploy\fileserver.ear\easWebClient\metas\sp