/* * Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences. * * This file is part of Duckling project. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package cn.vlabs.umt.validate.formValidator; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.BeanFactory; import cn.vlabs.umt.ui.Attributes; import cn.vlabs.umt.validate.domain.ErrorMsg; import cn.vlabs.umt.validate.domain.ErrorMsgs; import cn.vlabs.umt.validate.validator.ValidatorFactory; /** * 表单验证的扩展类,有一些基本的验证方法,继承,并直接调用即可, * 囊括了umt主要的字段验证 * @author lvly * @since 2013-1-21 */ public abstract class FormValidator { /** * 最重要的变量,无论是值还是bean都从这里获得 * */ private HttpServletRequest request; /** * 运行结果,如果为空,则视为pass,里面有isPass()方法 * */ private ErrorMsgs msgs; public ErrorMsgs getMsgs() { return msgs; } public void setMsgs(ErrorMsgs msgs) { this.msgs = msgs; } public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } /** * 抽象方法,子类可扩展,自定义验证方法 * */ public abstract ErrorMsgs validateForm(); /** * 把验证信息,放到request里面 * 规则是 paramName_error,error_key * * */ protected void errorToRequest(){ if(msgs!=null){ for(ErrorMsg msg:msgs.getMsgs()){ request.setAttribute(msg.getProperty()+"_error", msg.getKey()); } } } protected BeanFactory getBeanFactory(){ return (BeanFactory)request.getServletContext().getAttribute(Attributes.APPLICATION_CONTEXT_KEY); } /** * 验证图形验证码 * 验证是否正确 * @param request * @param errors * @param name 字段名 */ protected void validateCode(ErrorMsgs errors,String name) { String validcode=request.getParameter(name); if(!ValidatorFactory.getValidCodeEqualsValidator(getRequest()).validate(validcode)){ errors.addMsg(new ErrorMsg(name,"regist.wrongValidcode")); return; } } /** * 验证用户邮箱 * 验证非空,和邮箱是否合法 * * @param request * @param errors * @param name 字段名 * */ protected void validateUserName(ErrorMsgs errors,String name){ String username=request.getParameter(name); if(!ValidatorFactory.getRequiredValidator().validate(username)){ errors.addMsg(new ErrorMsg(name,"common.validate.email.required")); return; } if(!ValidatorFactory.getEmailRegixValidator().validate(username)){ errors.addMsg(new ErrorMsg(name,"common.validate.email.invalid")); return; } } /** * 验证用户名是否存在 * * @param request * @param errors * @param name 字段名 * */ protected void validateUserNameExt(ErrorMsgs errors,String name){ if(!ValidatorFactory.getUserExistValidator(getBeanFactory()).validate(request.getParameter(name))){ errors.addMsg(new ErrorMsg(name,"regist.user.exist")); } } /** * 验证密码 * 验证长度,为空 * * @param request * @param errors * @param name 字段名 * */ protected void validatePassword(ErrorMsgs errors,String name){ String password=request.getParameter(name); if(!ValidatorFactory.getRequiredValidator().validate(password)){ errors.addMsg(new ErrorMsg(name,"common.validate.password.required")); return; } if(!ValidatorFactory.getMinLengthValidator(8).validate(password)){ errors.addMsg(new ErrorMsg(name,"common.validate.password.minlength")); return; } } /** * 验证重复密码 * 验证,两次输入是否一致,为空,和最小长度 * * @param request * @param errors * @param rePasswordname 重复密码字段名 * @param password 密码字段名 * * */ protected void validateRepassword(ErrorMsgs errors,String repasswordName,String passwordName){ String repassword=request.getParameter(repasswordName); if(!ValidatorFactory.getRequiredValidator().validate(repassword)){ errors.addMsg(new ErrorMsg(repasswordName,"common.validate.repassword.required")); return; } if(!ValidatorFactory.getMinLengthValidator(6).validate(repassword)){ errors.addMsg(new ErrorMsg(repasswordName,"common.validate.repassword.minlength")); return; } String password=request.getParameter(passwordName); if(!ValidatorFactory.getPasswordEqualsValidator(password).validate(repassword)){ errors.addMsg(new ErrorMsg(repasswordName,"common.validate.password.retype.not.equals")); return; } } /** * 验证姓名 * 验证不为空 * @param request * @param errors * @param name 验证字段名 * */ protected void validateTrueName(ErrorMsgs errors,String name){ String repassword=request.getParameter(name); if(!ValidatorFactory.getRequiredValidator().validate(repassword)){ errors.addMsg(new ErrorMsg(name,"common.validate.truename.required")); return; } } }