SpringMVC+ExtJS 实现文本框内容的唯一性判断

在输入文本框中输入内容,但是要求输入内容必须是唯一的,不与数据库中已存在的数据重复。

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值