如何去除标准产品操作校验
我们日常在标准产品基础上进行二次开发的时候,某些业务场景一些校验并不需要,那我们该如何去除标准产品操作校验呢?
最简单、直接、暴力的方法就是找到对应的插件,将其关闭,但是这样有什么缺点呢?
禁用一个插件可能会导致插件里面的其他逻辑也跟着失效,对业务侵入影响较大,我们只需要禁用操作校验,而不需要更改其他逻辑
下面我们讲一下,该如何优雅地去除标准产品校验
首先有这么一个业务场景:界面有一个开关字段,开关打开的时候,需要将一些字段值设置为必填,关闭的时候则需要设置为非必填,我们很容易联想到使用单据类型去处理这个逻辑,但是有个问题,切换单据类型会清空整个页面的其他数据,就因为个必填非必填,就让用户去重新录入,字段多的话,用户岂不是疯了?
我们简单新建一张单据:
假设这个必填校验的操作里面有对文本字段的必填校验,我们现在要去除它的校验
注册表单插件:
监听值改变时间,文本必填复选框打开时,文本必填,关闭时非必填,点击“测试必填”按钮时执行“必填校验”操作插件
注册操作插件,有个针对文本的必填校验:
打开“即时触发值更新”,打开保存操作的字段值合规性校验
打开界面,输入单据编号,点击“测试必填”按钮
可以看到我们自定义的校验错误:“文本不能为空”,符合预期
接下来我们关闭文本必填开关,点击“测试必填”按钮:
结果不用多说,依然会返回同样的结果
那我们现在来解决这个问题:
第一种方法就是文章开头提出的关闭插件的方法,很明显插件里面还有其他逻辑,不能轻易关闭
我们重新建一个操作插件,继承原来的操作类,重写onAddValidators方法:
关闭以前的操作插件,注册我们新开发的操作插件
再次点击“测试必填”按钮进行测试:
可以看到直接进入操作,跳过了原来的校验,原来的逻辑正常执行
好了,本文到此结束。
推荐阅读