操作插件提示异常的三种方式原创
金蝶云社区-wh_cn
wh_cn
23人赞赏了该文章 3631次浏览 未经作者许可,禁止转载编辑于2022年05月31日 14:42:43

在开发过程中经常碰到操作插件做了逻辑判断之后需要进行提示的场景,由于操作插件运行在服务端,无法通过showMessage的方式进行提示。

结合平常开发过程中的积累,将三种提示异常的方式整理出来,希望给需要的小伙伴一点帮助,也请各位大佬补充、指正。

1. 直接通过throw抛出异常的方式

```language

    public void beginOperationTransaction(BeginOperationTransactionArgs e) {

        super.beginOperationTransaction(e);

        //逻辑判断后需要给出前端信息显示

        throw new KDException(new ErrorCode(this.getClass().getName(),"抛出异常"));

    }

```


抛异常的方式最直接,但是前端会通过报错的方式显示,给人的感觉不好

image.png


2. 通过this.operationResult.setMessage方式返回提示

```language

    public void beginOperationTransaction(BeginOperationTransactionArgs e) {

        super.beginOperationTransaction(e);

        //逻辑判断需要给出提示

        this.operationResult.setShowMessage(true);

        this.operationResult.setSuccess(false);

        this.operationResult.setMessage("直接返回信息");

    }

```

该方式会弹出红色提示弹窗,交互方式比较好。

image.png

但是一旦在列表中选择了多条记录执行时,也会弹窗,但是无论代码里的判断是怎么样的,一律都是执行成功。

image.png

3. 通过this.operationResult.addErrorInfo方式返回提示

```language

    public void beginOperationTransaction(BeginOperationTransactionArgs e) {

        super.beginOperationTransaction(e);

        DynamicObject[] bills= e.getDataEntities();

        List<DynamicObject> successObj=new ArrayList<>();

        for (DynamicObject bill : bills) {

            //业务逻辑判断

            Boolean isSuccess=false;

            if(isSuccess)

            {

                successObj.add(bill);

            }

            else

            {

                this.operationResult.addErrorInfo(new ValidationErrorInfo("",bill.getPkValue(),

                        0,0,"err","billtitle",bill.getString("billno")+"出现错误",ErrorLevel.Error));

            }

        }

        e.setDataEntities(successObj.toArray(new DynamicObject[successObj.size()]));

    }

```

该方式解决了第二种提示方式多条记录同时执行是的问题,

当在单据中或列表选择一条记录执行时,会以顶部黄色弹窗提示

image.png

当在列表中选择了多条记录执行时,系统会以系统标准的弹窗给予提示,统计出执行了多少条,成功多少天失败多少条,并且可以将没条记录的详细信息在窗口下半部分进行列示。

image.png

-------------------------------------------------------------------------------------------------------------

以上就是到目前为止我所碰到的三种操作插件提示方式,希望能给同样在项目一线奋斗的小伙伴一点点帮助。

如果您有其他方式欢迎分享出来。


赞 23