前言
不管什么项目,只要在添加的时候,有些东西是不能重复的,所以就少不了输完之后去库里查找是否有相同的数据存在,目前我能想到的判读库里是否有相同数据有两种方案。第一种:点击添加按钮,如果有相同的则提示“该数据已存在请重新编辑”,然后清空你所填的,否则添加成功。第二种:填完数据,鼠标离开点击任意地方,如果有相同数据,同样提示“该数据已存在请重新编辑”,这两种方法,我倾向于第二种,因为第一种是每次点击确定才提示,很麻烦,下面小编就来给大家分享一下第二种方案的实现。
JS
function checkDuplicate(value){
var bool = true;
if(!isNull(value)){
$.GAjax({
url : Param.context + "oaPersonYfmanage/checkyyxId",
type : "POST",
async:false,
dataType : "JSON",
data:{
"id":$("#id").val(),
"assetId":value,
},
success : function(data) {
if(!data){//验证不通过
bool = false;
}else{
$("#yyxId").val($("#yyx_id").val());//yyxId是输入的内容,yyx_id跟实体中的字段相对应
bool = true;
}
}
});
}else{
bool = true;
}
return bool;
}
//添加自定义验证
jQuery.validator.addMethod("isCkeckDuplicate",function(value, element){
var tmp = checkDuplicate(value);
if(tmp){
return true
}else{
return false;
}
},"该编号已存在,请重新编辑!");
});
controller
/**
* 判断是否有相同的编号
* @return
*/
@RequestMapping(value = "/checkyyxId")
@ResponseBody
public boolean checkTitle(@RequestParam(value = "id", required = false) String id,
@RequestParam(value = "yyxId", required = true) String yyxId,
HttpServletRequest request){
boolean require=false;
yyxId = StringUtils.transactSQLInjection(yyxId);
String sql = "select yyx_id from oa_person_yfmanage where 1=1 and id='"+id+"'";
List list = this.commonDao.getEntityManager().createNativeQuery(sql).getResultList();
if(!EmptyUtil.isEmpty(list)){
if(list.size()>1){
require=false;
}else if(list.size()==1&&!EmptyUtil.isEmpty(id)&&id.equals(list.get(0))){
require = true;
}
}else{
require = true;
}
return require;
}
jsp就不分享了,只需要写一句获取焦点就可以了。