需求

在某种情况下,我们可能需要复制已经存在的记录,使用这条记录进行修改新增, 而不是再次重新填写一遍大部分内容都重复的信息.

实现步骤

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等等,可能需要自定义加载哦

  • No labels