`
jiangzhenghua
  • 浏览: 592367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jquery Validation 中使用remote做ajax验证时遇到的问题

    博客分类:
  • web
阅读更多

需要验证的页面中js代码如下:

$("#inputForm").validate({
				rules: {
					loginName: {
						required: true,
						remote: "user!checkLoginName.action?oldLoginName=" + encodeURIComponent('${loginName}')					},
					name: "required",
					password: {
						required: true,
						minlength:3
					},
					passwordConfirm: {
						equalTo:"#password"
					},
					email:"email",
					checkedRoleIds:"required"
				},
				messages: {
					loginName: {
						remote: "用户登录名已存在"
					},
					passwordConfirm: {
						equalTo: "输入与上面相同的密码"
					}
				}
			});

 

其中对loginName做的验证是看数据库中是否有重复的名称,使用的remote支持的是ajax提交,提交时会提交两个参数一个是loginName还有一个就是oldLoginName,之所以传递两个参数就是为了在修改的时候oldLoginName代表的是没有修改的原始值。hibernate也dao也提供了对这种查询的支持,代码如下:

 /**
     * 判断对象的属性值在数据库内是否唯一.
     * 
     * 在修改对象的情景下,如果属性新修改的值(value)等于属性原值(orgValue)则不作比较.
     * 传回orgValue的设计侧重于从页面上发出Ajax判断请求的场景.
     * 否则需要SS2里那种以对象ID作为第3个参数的isUnique函数.
     */
    public boolean isPropertyUnique(String propertyName, Object newValue, Object orgValue) {
        if (newValue == null || newValue.equals(orgValue))
            return true;

        Object object = findUniqueByProperty(propertyName, newValue);
        return (object == null);
    } 

函数返回true的时候证明数据库中没有重名的loginName,当返回的是false证明数据库中有重名的loginName

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics