1. 概述

在表单方案中,我们在数据保存时,可能需要对数据进行一些后端检查,或者修改一些我们提交的数据。这样的需求,可以通过表单方案的代码来进行一些处理。

2. 表单方案脚本

在创建表单方案时,我们会默认出一段java代码。

import com.alibaba.fastjson.JSONObject;
import com.redxun.common.base.entity.JsonResult;
import com.redxun.form.core.entity.AfterParams;
import com.redxun.common.utils.MessageUtil;
//数据保存之前调用
JsonResult  beforeSave(JSONObject data) {
    //return JsonResult.Fail("出错原因");
    return JsonResult.Success();
}
//数据处理之后调用
void  afterSave(AfterParams params) {

}

这里我们可以看到,这个脚本有两个方法,一个是保存之前可以调用的方法,一个是在表单数据保存之后调用的方法。

2.1 表单数据保存前方法 beforeSave

保存之前的方法beforeSave这个方法的参数是一个JSONObject对象的数据,这个数据就是表单的数据,这个方法返回一个JsonResult 对象。

关于JsonResult 对象的定义如下: JsonResult定义

2.1.1 修改数据

比如我在保存之前需要对表单的某个数据进行更改,比如修改表单的 name 字段。

我们编写脚本如下:

JsonResult  beforeSave(JSONObject data) {
    //return JsonResult.Fail("出错原因");
    data.name="测试标题";
    return JsonResult.Success();
}

2.1.2 验证数据

比如我们在报销的时候需要验证以下报销的金额是否超出范围,我们可以写如下的脚本:

JsonResult  beforeSave(JSONObject data) {
    if(data.jine>1000){
        return JsonResult.Fail("报销金额不能超过:" + data.jine +"元");
    }
    return JsonResult.Success();
}

2.2 表单保存后置方法 afterSave

这个方法是在表单保存之后进行调用的。

他的参数为 AfterParams 这个参数类定义如下:

public class AfterParams {
    //保存数据结果
    private DataResult dataResult;
    //表单保存后的数据对象
    private JSONObject jsonData;
}

其中 DataResult 的数据结构如下:

public class DataResult implements Serializable {
    public static final String ACTION_ADD = "add";
    public static final String ACTION_UPD = "upd";
    //表单数据保存的动作 add 表示这个数据是增加的,upd 表示数据是在更新
    private String action = "";
    //主键
    private String pk = "";
    //BO定义别名
    private String boAlias = "";

这个就需要根据具体的需求来进行一些代码的编写。

文档更新时间: 2021-03-17 09:53   作者:zyg