需求
在某种情况下,我们可能需要复制已经存在的记录,使用这条记录进行修改新增, 而不是再次重新填写一遍大部分内容都重复的信息.
实现步骤
1.在列表设计器添加复制按钮
- 首先进入列表设计器,把超链接拖入到指定位置
- 注意超链接参数需要传递 duplicate_id
- 超链接URL请根据页面定义ID的实际情况填写,我这里是使用了CRUD,所以会有?_mode=add.
- 点击确定,保存
2.在需要复制的表单修改加载绑定器
- 进入需要复制的表单设计器,高级选项,修改加载绑定器为 BeanShell
- 使用如下的代码
import org.joget.apps.form.model.Form; import org.joget.apps.form.model.Element; import org.joget.apps.form.model.FormData; import org.joget.apps.form.model.FormRow; import org.joget.apps.form.model.FormRowSet; import org.joget.commons.util.LogUtil; import org.joget.apps.form.lib.WorkflowFormBinder; public FormRowSet loadData() { FormRowSet rows = null; WorkflowFormBinder binder = new WorkflowFormBinder(); String duplicateId = "#requestParam.duplicate_id#"; if (!duplicateId.isEmpty() && !duplicateId.contains("requestParam.")) { rows = binder.load(element, duplicateId, formData); FormRow row = rows.get(0); row.setId(null); //去除不加载的字段 row.remove("gitPasswd"); } else { rows = binder.load(element, primaryKey, formData); } return rows; } return loadData();
实际情况可能比这里要复杂,比如表单上有下拉选项,grid,spreadsheet等等,可能需要自定义加载哦