JEECG 通用表单字段重复校验实现
目的:实现通用表单字段重复校验例如:部门管理模块,部门名称重复校验 <input name="departname" class="inputxt" value="${depart.departname }" validType="t_s_depart,departname,id" datatype="s3-10">
1)代码配置 给input标签,增加validType属性,格式如:t_s_depart,departname,id 即(数据表名称、对应的数据库字段、业务实体的隐藏域主键的Id属性)2)消息提示方式,两种方式.提示弹出层:如下所示:给t:formvalid增加tiptype="1" 属性 <t:formvalid formid="formobj" dialog="true" usePlugin="password" layout="table" tiptype="1"action="cgFormHeadController.do?save">.提示信息在文本框后面提示,不需要给t:formvalid 增加任何属性。
备注:次文件为当时做重复校验的第一手文档,未做任何修改。 验证重复类jeecg.system.controller.core.DuplicateCheckAction /** * 校验数据是否在系统中是否存在 * @return */ @RequestMapping(params = "doDuplicateCheck") @ResponseBody public AjaxJsondoDuplicateCheck(DuplicateCheckPage duplicateCheckPage, HttpServletRequestrequest) { AjaxJson j = new AjaxJson(); Long num = null; //判读是修改还是添加 if(StringUtils.isNotBlank(duplicateCheckPage.getRowObid())){ //.编辑页面校验 String sql = "SELECT count(*) FROM "+duplicateCheckPage.getTableName() +" WHERE "+duplicateCheckPage.getFieldName()+" =?and id != ?"; num = jdbcDao.getCountForJdbcParam(sql, newObject[]{duplicateCheckPage.getFieldVlaue(),duplicateCheckPage.getRowObid()}); }else{ //.添加页面校验 String sql = "SELECT count(*) FROM "+duplicateCheckPage.getTableName() +" WHERE "+duplicateCheckPage.getFieldName()+"=?"; num = jdbcDao.getCountForJdbcParam(sql, new Object[]{duplicateCheckPage.getFieldVlaue()}); } if(num==null||num==0){ //该值可用 j.setSuccess(true); j.setMsg("该值可用!"); }else{ //该值不可用 j.setSuccess(false); j.setMsg("该值不可用,系统中已存在!"); } return j; } Ajax校验是否重复$.ajax({ url : 'duplicateCheckAction.do?doDuplicateCheck', async:false, data : { tableName : tableName, fieldName : fieldName, fieldVlaue: fieldVlaue, rowObid : obid }, dataType : 'json', success : function(response) { check_flag = response.msg+"+"+response.success; //$.messager.alert('提示', response.msg, 'error'); } }); $.ajaxSetup({ async: false});//同步ajax return check_flag; Validform_v5.3.1_min.js修改的比较多。
给力给力:D:D:D:D $.ajaxSetup({ async: false});//同步ajax
这个很关键啊!
但是为什么还要同步一下呢?
页:
[1]