在输入文本框中输入内容,但是要求输入内容必须是唯一的,不与数据库中已存在的数据重复。
java代码:
(1)在Biz中定义抽象方法validateGroupNameOrValue,然后在BizImpl层中重写此方法。
<span style="font-size:14px;">@Override
public int validateGroupNameOrValue(String groupName,Integer value){//根据从文本框获取的参数值判断值是否已存在
String hql1="from UserGroup where 1=1 and groupName like '" + groupName + "'";
String hql2="from UserGroup where 1=1 and value='" + value + "'";
//根据hql语句查询数据中相同值有多少个
int size1 = userGroupDao.findList(hql1).size();
int size2 = userGroupDao.findList(hql2).size();
if(size1 > 0 && size2 > 0){//分组名称与值同时不唯一
return 1;
}else if(size1 > 0 && size2 == 0){//分组名称不唯一,值唯一
return 2;
}else if(size1 == 0 && size2 > 0){//分组名称唯一,值不唯一
return 3;
}else{//分组名称和值均唯一
return 0;
}
}</span>
(2)在controller.java中调用此方法
/*添加*/
<span style="font-size:14px;">@RequestMapping(value = "/add")
public void add(String groupName,Integer value,String description,
@RequestParam(value = "start", defaultValue = "0", required = false) int start,
@RequestParam(value = "limit", defaultValue = "25", required = false) int limit,
HttpServletRequest request, HttpServletResponse response) {
JSONResult rets = new JSONResult(false, null);
int result=userGroupBiz.validateGroupNameOrValue(groupName.trim(), value);//调用Biz中的方法先判断值是否已存在
if(result==0){//当返回值为0时,说明数据库中没有所要添加的值,可以添加
UserGroup userGroup=new UserGroup();
userGroup.setGroupName(groupName);
userGroup.setValue(value);
userGroup.setDescription(description);
this.outJson(response,userGroupBiz.add(userGroup));
}else{ //当返回值不为0时,说明数据库中已有相同值存在
if(result == 1){
rets.setSuccess(false);
rets.setMessage("用户分组名称和值已存在,请重新输入!");
}else if(result == 2){
rets.setSuccess(false);
rets.setMessage("用户分组名称已存在,请重新输入!");
}else if(result == 3){
rets.setSuccess(false);
rets.setMessage("值已存在,请重新输入!");
}
this.outJson(response, rets);
}
}</span>
(3)在使用ExtJS的view中的对应字段写一个自定义的验证事件validator
<span style="font-size:14px;">{
id : 'groupNameId',
fieldLabel : '用户分组名称',
allowBlank : false,
afterLabelTextTpl : PlatMap.redFlag,
blankText : '用户分组名称不能为空',
emptyText : '请输入用户分组名称',
regex : /\S/,
regexText : '用户分组名称不能为空',
minLength : 2, // 允许输入的最少字符数
minLengthText : "最小长度不能少于2个字符!",// 提示文本
maxLength : 50,// 允许输入的最大字符数
maxLengthText : "最大长度不能超过 50 个字符!",// 提示文本
name : 'groupName',
validationEvent : 'blur',
validator : function(thisText) {
var isGroupNameOK = true;// 先定义个全局变量
var Mform = this.ownerCt.ownerCt;
var groupNameValue = Mform.down('textfield[name=groupName]').getValue();
var userGroup_Id = Mform.down('hiddenfield[name=userGroupId]').getValue();
var value = 0;
Ext.Ajax.request({
url : '/base/userGroup/validateGroupName',
method : 'POST',
params : {
userGroupId : userGroup_Id,
groupName : groupNameValue,
value : value
},
success : function(response) {
var result = Ext.decode(response.responseText);
if (!result.success) {
isGroupNameOK = false;
//此提示信息会显示在文本框后面,红色警告提示
Ext.getCmp('groupNameId').markInvalid("用户分组名称已存在,请重新输入!");
} else {
isGroupNameOK = true;
Ext.getCmp('groupNameId').clearInvalid();
}
}
});
return isGroupNameOK;
}
}</span>