一文读懂-如何去除标准产品操作校验原创
金蝶云社区-云社区用户n0uK7566
云社区用户n0uK7566
0人赞赏了该文章 790次浏览 未经作者许可,禁止转载编辑于2021年07月21日 15:11:42

如何去除标准产品操作校验

我们日常在标准产品基础上进行二次开发的时候,某些业务场景一些校验并不需要,那我们该如何去除标准产品操作校验呢?

最简单、直接、暴力的方法就是找到对应的插件,将其关闭,但是这样有什么缺点呢?

禁用一个插件可能会导致插件里面的其他逻辑也跟着失效,对业务侵入影响较大,我们只需要禁用操作校验,而不需要更改其他逻辑

下面我们讲一下,该如何优雅地去除标准产品校验

首先有这么一个业务场景:界面有一个开关字段,开关打开的时候,需要将一些字段值设置为必填,关闭的时候则需要设置为非必填,我们很容易联想到使用单据类型去处理这个逻辑,但是有个问题,切换单据类型会清空整个页面的其他数据,就因为个必填非必填,就让用户去重新录入,字段多的话,用户岂不是疯了?

我们简单新建一张单据:

image.png

假设这个必填校验的操作里面有对文本字段的必填校验,我们现在要去除它的校验

注册表单插件:

image.png

监听值改变时间,文本必填复选框打开时,文本必填,关闭时非必填,点击“测试必填”按钮时执行“必填校验”操作插件

注册操作插件,有个针对文本的必填校验:

image.png

打开“即时触发值更新”,打开保存操作的字段值合规性校验

打开界面,输入单据编号,点击“测试必填”按钮

image.png

image.png

可以看到我们自定义的校验错误:“文本不能为空”,符合预期

接下来我们关闭文本必填开关,点击“测试必填”按钮:

image.png

结果不用多说,依然会返回同样的结果

那我们现在来解决这个问题:

第一种方法就是文章开头提出的关闭插件的方法,很明显插件里面还有其他逻辑,不能轻易关闭

我们重新建一个操作插件,继承原来的操作类,重写onAddValidators方法:

image.png

关闭以前的操作插件,注册我们新开发的操作插件

image.png

再次点击“测试必填”按钮进行测试:

image.png

image.png

可以看到直接进入操作,跳过了原来的校验,原来的逻辑正常执行

好了,本文到此结束。


赞 0