精华内容
下载资源
问答
  • validate方法作用
    千次阅读
    2018-02-03 20:07:08

    一、validate简介

        validate是JQ的一个插件。其是对一些常用常见的表单校验方法进行了封装。方别使用与开发。同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。

     

    二、使用方法

    1、因为validate为JQ的插件,因此使用时,需要先导入JQ.js文件,然后再导入validate.js。

    2、在页面加载成功后对表单进行校验。

    3、校验方法 $("选择器").validate()。

    4、编写规则:

                          $("选择器").validate({

                                

                                 rules:{},  //规则

                                 messages:{}   (messages为自定义提示信息,其可有可无,如果没有。则一切提示信息为默认)

     

    更多相关内容
  • Spring Validation方法实现原理分析

    千次阅读 2021-02-26 20:02:44
    3、底层统一调用了DataBinder的validate方法 4、DataBinder的作用:Binder that allows for setting property values onto a target object, including support for validation and binding result analysis,也就是...

    最近要做动态数据的提交处理,即需要分析提交数据字段定义信息后才能明确对应的具体字段类型,进而做数据类型转换和字段有效性校验,然后做业务处理后提交数据库,自己开发一套校验逻辑的话周期太长,因此分析了Spring Validation的实现原理,复用了其底层花样繁多的Validator,在此将分析Spring Validation原理的过程记录下,不深入细节

    如何使用Spring Validation

    Spring Bean初始化时校验Bean是否符合JSR-303规范

    1、手动添加BeanValidationPostProcessor Bean

    2、在model类中定义校验规则,如@Max、@Min、@NotEmpty

    3、声明Bean,综合代码如下:

    @Bean

    public BeanPostProcessor beanValidationPostProcessor() {

    return new BeanValidationPostProcessor();

    }

    @Bean

    public UserModel getUserModel() {

    UserModel userModel = new UserModel();

    userModel.setUsername(null);

    userModel.setPassword("123");

    return userModel;

    }

    @Data

    class UserModel {

    @NotNull(message = "username can not be null")

    @Pattern(regexp = "[a-zA-Z0-9_]{5,10}", message = "username is illegal")

    private String username;

    @Size(min = 5, max = 10, message = "password's length is illegal")

    private String password;

    }

    4、BeanValidationPostProcessor Bean内部有个boolean类型的属性afterInitialization,默认是false,如果是false,在postProcessBeforeInitialization过程中对bean进行验证,否则在postProcessAfterInitialization过程对bean进行验证

    5、此种校验使用了spring的BeanPostProcessor逻辑

    6、校验底层调用了doValidate方法,进一步调用validator.validate,默认validator为HibernateValidator,validation-api包为JAVA规范,Spring默认的规范实现为hibernate-validator包,此hibernate非ORM框架Hibernate

    protected void doValidate(Object bean) {

    Assert.state(this.validator != null, "No Validator set");

    Set> result = this.validator.validate(bean);

    7、HibernateValidator默认调用ValidatorFactoryImpl来生成validator,后面展开将ValidatorFactoryImpl

    支持方法级别的JSR-303规范

    1、手动添加MethodValidationPostProcessor Bean

    2、类上加上@Validated注解(也支持自定义注解,创建MethodValidationPostProcessor Bean时传入)

    3、在方法的参数中加上验证注解,比如@Max、@Min、@NotEmpty、@NotNull等,如

    @Component

    @Validated

    public class BeanForMethodValidation {

    public void validate(@NotEmpty String name, @Min(10) int age) {

    System.out.println("validate, name: " + name + ", age: " + age);

    }

    }

    4、MethodValidationPostProcessor内部使用aop完成对方法的调用

    public void afterPropertiesSet() {

    Pointcut pointcut = new `AnnotationMatchingPointcut`(this.validatedAnnotationType, true);

    this.advisor = new `DefaultPointcutAdvisor`(pointcut, createMethodValidationAdvice(this.validator));

    }

    protected Advice createMethodValidationAdvice(@Nullable Validator validator) {

    return (validator != null ? new `MethodValidationInterceptor`(validator) : new MethodValidationInterceptor());

    }

    5、底层同样默认调用ValidatorFactoryImpl来生成validator,由validator完成校验

    直接编码调用校验逻辑,如

    public class Person {

    @NotNull(message = "性别不能为空")

    private Gender gender;

    @Min(10)

    private Integer age;

    ...

    }

    ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

    Validator validator = validatorFactory.getValidator();

    Person person = new Person();

    person.setGender(Gender.Man);

    validator.validate(person);

    同上,默认调用ValidatorFactoryImpl来生成validator,由validator完成具体校验

    在Spring controller方法参数中使用valid或validated注解标注待校验参数

    1、先熟悉下Spring的请求调用流程

    c259870f87e595b1199823cc4d01d0e9.png

    2、可以看到在各种resolver处理请求参数的过程中做了参数校验

    3、底层统一调用了DataBinder的validate方法

    4、DataBinder的作用:Binder that allows for setting property values onto a target object, including support for validation and binding result analysis,也就是binder处理了request提交的字符串形式的参数,将其转换成服务端真正需要的类型,binder提供了对validation的支持,可以存放校验结果

    5、DataBinder的validator默认在ConfigurableWebBindingInitializer中初始化,默认使用OptionalValidatorFactoryBean,该Bean继承了LocalValidatorFactoryBean,LocalValidatorFactoryBean组合了ValidatorFactory、自定义校验属性等各种校验会用到的信息,默认使用ValidatorFactoryImpl来获取validator

    至此,所有的线索都指向了ValidatorFactoryImpl,下面分析下该类

    public Validator `getValidator`() {

    return `createValidator`(

    constraintValidatorManager.getDefaultConstraintValidatorFactory(),

    valueExtractorManager,

    validatorFactoryScopedContext,

    methodValidationConfiguration

    );

    }

    Validator `createValidator`(ConstraintValidatorFactory constraintValidatorFactory,

    ValueExtractorManager valueExtractorManager,

    ValidatorFactoryScopedContext validatorFactoryScopedContext,

    MethodValidationConfiguration methodValidationConfiguration) {

    BeanMetaDataManager beanMetaDataManager = beanMetaDataManagers.computeIfAbsent(

    new BeanMetaDataManagerKey( validatorFactoryScopedContext.getParameterNameProvider(), valueExtractorManager, methodValidationConfiguration ),

    key -> new BeanMetaDataManager(

    `constraintHelper`,

    executableHelper,

    typeResolutionHelper,

    validatorFactoryScopedContext.getParameterNameProvider(),

    valueExtractorManager,

    validationOrderGenerator,

    buildDataProviders(),

    methodValidationConfiguration

    )

    );

    return `new ValidatorImpl`(

    constraintValidatorFactory,

    beanMetaDataManager,

    valueExtractorManager,

    constraintValidatorManager,

    validationOrderGenerator,

    validatorFactoryScopedContext

    );

    }

    public final Set> validate(T object, Class>... groups) {

    Contracts.assertNotNull( object, MESSAGES.validatedObjectMustNotBeNull() );

    sanityCheckGroups( groups );

    ValidationContext validationContext = `getValidationContextBuilder().forValidate( object )`;

    if ( !validationContext.getRootBeanMetaData().hasConstraints() ) {

    return Collections.emptySet();

    }

    ValidationOrder validationOrder = determineGroupValidationOrder( groups );

    ValueContext, Object> valueContext = `ValueContext.getLocalExecutionContext`(

    validatorScopedContext.getParameterNameProvider(),

    object,

    validationContext.getRootBeanMetaData(),

    PathImpl.createRootPath()

    );

    return validateInContext( validationContext, valueContext, validationOrder );

    }

    1、getValidator->createValidator->ValidatorImpl->validate

    在执行过程中封装了beanMetaDataManager、validationContext、valueContext等内容,都是校验时会用到的上下文信息,如待校验bean的所有校验项(含父类和接口)、property、method parameter的校验信息,从ValidatorFactoryScopedContext继承过来的validator通用的各种工具类(如message、script等的处理)等,内容比较复杂

    2、分组(group)校验忽略,来到默认分组处理validateConstraintsForDefaultGroup->validateConstraintsForSingleDefaultGroupElement->validateMetaConstraint(注:metaConstraints维护了该bean类型及其父类、接口的所有校验,需要遍历调用validateMetaConstraint)

    3、继续调用MetaConstraint的doValidateConstraint方法,根据不同的annotation type走不同的ConstraintTree

    public static ConstraintTree of(ConstraintDescriptorImpl composingDescriptor, Type validatedValueType) {

    if ( composingDescriptor.getComposingConstraintImpls().isEmpty() ) {

    return new SimpleConstraintTree<>( composingDescriptor, validatedValueType );

    }

    else {

    return new ComposingConstraintTree<>( composingDescriptor, validatedValueType );

    }

    }

    4、具体哪些走simple,哪些走composing暂且不管,因为二者都调用了ConstraintTree的'getInitializedConstraintValidator'方法,该步用来获取校验annotation(如DecimalMax、NotEmpty等)对应的validator并初始化validator

    5、 ConstraintHelper类维护了所有builtin的validator,并根据校验annotation(如DecimalMax)分类,validator的描述类中维护了该validator的泛型模板(如BigDecimal),如下:

    putConstraints( tmpConstraints, DecimalMax.class, Arrays.asList(

    DecimalMaxValidatorForBigDecimal.class,

    DecimalMaxValidatorForBigInteger.class,

    DecimalMaxValidatorForDouble.class,

    DecimalMaxValidatorForFloat.class,

    DecimalMaxValidatorForLong.class,

    DecimalMaxValidatorForNumber.class,

    DecimalMaxValidatorForCharSequence.class,

    DecimalMaxValidatorForMonetaryAmount.class

    ) );

    在获取具体bean类的validator时,先根据annotation获取所有的validator,对应方法是ConstraintManager.findMatchingValidatorDescriptor,然后根据被校验对象的类型获取唯一的validator

    6、然后根据上下文信息initializeValidator,进而调用validator的isValid方法校验

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • validate的用法

    万次阅读 2019-02-13 17:43:47
    若用validate调用后台方法,返回值只能为boolean $(function(){ $("form").validate({ rules:{ yuanpass:{required:true, remote:"/user/checkpass"}, userPs:{required:true,minlength:6}, newpass2:{...

    引入

    <script type="text/javascript" src="js/jquery-1.8.3.min.js" ></script>
    		<script type="text/javascript" src="js/jquery.validate.js" ></script>
    

    使用方法

    <script type="text/javascript">
    			$(function(){
    				$("#form1").validate({
    					rules:{
    						uname:"required",
    						upass:{required:true,digits:true,minlength:6,maxlength:12},
    						repass:{equalTo:"#upass"},
    						uage:{max:150,min:0}
    					},
    					messages:{
    						uname:"用户名必填",
    						upass:{
    							required:"密码必填",
    							digits:"密码必须是整数",
    							minlength:"密码至少6位",
    							maxlength:"密码不能超过12位"
    						},
    						repass:"密码不一致",
    						uage:{
    							max:"年龄不能超过{0}",
    							min:"年龄不能小于0"
    						}
    					}
    				});
    			})
    			
    		</script>
    
    <form id="form1" action="index2.html" method="get">
    		username:<input type="text" name="uname"><br>
    		password:<input type="text" name="upass" id="upass"><br>
    		repeatpassword:<input type="text" name="repass"><br>
    	    age:<input type="text" name="uage"><br>
    		<input type="submit" value="提交">
    	</form>
    

    若用validate调用后台方法,返回值只能为boolean

    
          <script type="text/javascript">
               $(function(){
                   $("form").validate({
                       rules:{
                           yuanpass:{required:true,
                               remote:"/user/checkpass"},
                           userPs:{required:true,minlength:6},
                           newpass2:{required:true,equalTo:"#userPs"}
                       },
                       messages:{
                           yuanpass:{
                               required:"请输入原密码",
                               remote:"与原密码不一致"
                           },
                           userPs:{
                               required:"请输入新密码",
                               minlength:"新密码至少6位"
                           },
                           newpass2:{
                               required:"请输入重复密码",
                               equalTo:"两次密码要一致"
                           }
                       }
                   })
               })
    
        </script>
    

    后台接收数据

       //验证密码
        @RequestMapping("/user/checkpass")
        public void  checkpass(String yuanpass,ModelMap map,HttpServletResponse response){
             UserTb userTb=(UserTb) map.get("u1");
            response.setContentType("text/html;charset=utf-8");
            try {
                PrintWriter out=response.getWriter();
                if(userTb.getUserPs().equals(yuanpass)){
                    out.print(true);
                }else{
                    out.print(false);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    展开全文
  • vee-validate v-validate使用规则

    千次阅读 2019-10-30 10:45:05
    表单检测这是vue的一个插件,网上教程因为配置和版本的关系容易让人一头雾水。...2.不管哪个版本,名字怎么变,标签内都需要两个要点,name(field)和v-validate(规则),name是用来匹配配置文件内的字典或...

    表单检测这是vue的一个插件,网上教程因为配置和版本的关系容易让人一头雾水。
    我自己也不会但是摸着石头过河,这里记录几个要点。
    1.插件你需要先安装,注册,然后你需要配置一个文件VeeValidate.js(别问,问就是抄,写法是真的多,建议github)
    2.不管哪个版本,名字怎么变,标签内都需要两个要点,name(field)(data-vv-name)和v-validate(规则),name是用来匹配配置文件内的字典或者填充错误信息,可以不写但是我总结是写上就会省好多事。部分验证也需要用name。
    3.规则写法v-validate="‘required|numeric|length:4’"
    v-validate="{required: true}"
    4.js内校验写法// validate all fields.
    //  校验全局范围所有字段
    validator.validate(); === validateAll() 两个方法完全一样。

    // validate a field that has a matching name with the provided selector.
    // 校验哪个字段? field 取name的值。
    validator.validate(‘field’);

    // validate a field within a scope.
    // 校验 某个域内 的某个字段。
    validator.validate(‘scope.field’);

    // validate all fields within this scope.
    // 校验 某个域内的所有字段。 上述例子就是用的这个。 _
    validator.validate(‘scope.*’);

    // validate all fields without a scope.
    // 校验没有定义域内的 字段。适用场景: 校验场景分为两种: 定义域的,没有定义域。
    //  当页面所有需要校验的字段,都定义了域,则这个方法会导致没有可校验的值,直接返回true
    validator.validate(’*’);
    5.使用部分验证时返回的布尔值是对的,但是错误信息里居然有所有的校验结果,不懂,反正写js只取所需。

    展开全文
  • vee-validate:vue最好的验证插件。vee-validate 1. vee-validate自然输入校验 使用步骤: 安装: npm i vee-validate 创建独立校验文件utils/validate.js,导入默认校验规则。 技术支持及细节说明 示例代码:...
  • Validate事件和CauseValidation属性 前言 ❤很多时候我们需要在控件失去焦点之前,再去判断其内容,比如说:想限制TextBox控件中内容为0-10的数字(你也可以用键盘Key事件,这个另说),想把ComboBox新输入的内容...
  • [泪奔][泪奔][泪奔] 原因只是因为当输入正确的网址的之后,没有调用callback函数的逻辑控制,从而导致不报错,不调用validate方法。[泪奔][泪奔][泪奔] (疯狂的检查代码、测试正则长达数小时,原来只是没有调用...
  • [求助]validate()方法什么时候不用也没关系如题搜索更多相关的解决方案:validate没关系----------------解决方案--------------------------------------------------------你问什么?----------------解决方案------...
  • Vue表单预校验 validate方法不生效

    千次阅读 2020-08-29 13:59:56
    修改方法代码为 再来以便错误测试 2不见了,再缩小一下范围,看看是不是我英文打错了(经常) 测试 好的可以结案了,valid方法没有执行 半小时后。。。。。错误出处 在自定义检验规则时,由于我对自定义校验...
  • validator框架 validate方法

    千次阅读 2009-10-22 09:31:00
    validator框架 validate方法 ActionForm/ValidatorForm/ValidatorActionForm struts 1.3为例validate方法有三种来源,分别继承自ActionForm, ValidatorForm, ValidatorActionForm不同点:(1).继承自ActionForm的...
  • 我们在用element-ui的时候,有时会用不到表单控件,常常会自己做一些自定义的选项,在这个时候这个自定义规则就必须自己来写了,但是写完自定义规则后在提交表单的时候触发不了validate方法 比如this.$refs.formName...
  • jQueryValidate 插件(表单验证功能)

    千次阅读 2017-06-09 17:52:52
    导入 js 库 src=... src="http://static.runoob.com/assets/jquery-validation-1.14.0/dist/jquery.validate.min.js"> 默认校验规则 序号
  • HTML validate分享

    2021-06-30 02:57:34
    HTML validate是指HTML验证。它是通过与标准HTML规则进行比较的方式,分析HTML文档、标记出错误和非标准代码的处理过程。Web页面使用HTML进行渲染,而HTML本身采用了HTML规范作为其规则和标准。通过验证HTML代码...
  • callBack() 多写了,保证函数中有且只有一个callBack()可以执行,如果多了的话它也不知道执行哪一个就会...2、callBack() 少写了,导致不能进入 this.$refs.editForm.validate() 函数中 顺便写一下请求后端接口的方...
  • validate验证

    2021-05-05 09:28:48
    validate: jquery的一个插件,依赖jquery使用,Validation是历史最悠久的jQuery插件之一,经过了全球范围内不同项目的验证,并得到了许多Web开发者的好评。 内置验证规则 简单强大的验证信息提示 实时验证 ...
  • Jquery Validate用法简介

    2020-09-23 16:06:13
    转自:...一导入js库 二、默认校验规则 (1)required:true 必输字段 (2)remote:“check.php” 使用ajax方法调用check.php验证输入值 (3)email:true 必须输入正确格式的电子邮件 (4)url:true
  • Validate的使用

    千次阅读 2019-09-08 20:29:53
    Validate插件的使用,可以用来判断表单格式
  • vee-validate表单校验的使用方法

    千次阅读 2022-01-26 20:48:18
    VeeValidate 是 Vue.js 表单验证框架。VeeValidatehttps://vee-validate.logaretm.com/ 第一步:安装 npm i vee-validate@4.0.3 第二步:导入 // 导入组件 import { Form, Field } from 'vee-validate' ...
  • validate验证不管用总结

    千次阅读 2018-07-10 10:40:29
    使用validate验证时,发现有些input验证不管用, ...标签有这些属性时,validate默认不验证,为契合业务逻辑,可以使用如下方法: 提交之前先把指定标签的属性为如上不能验证的属性去掉, if($("#photoCover")...
  • 方法一:引用文件 use app\admin\validate\EnealValidate; validate(EnealValidate::class)->check($postData); 或 validate(EnealValidate::class)->scene($scene)->check($postData); 不使用静态方法...
  • java基础系列十九(validate关键字)

    千次阅读 2021-11-01 17:21:31
    在实际应用中,不要依赖使用该方法回收任何短缺的资源,这是因为很难知道这个方法什么时候被调用。 [java]view plaincopy <spanstyle="font-size:14px;">classPeople{ finalvoid...
  • validate注解

    2021-03-02 10:13:51
    空检查 @NotNull:不能为null,但可以为empty。 @NotEmpty:不能为null,而且长度必须大于0 @NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
  • jQuery Validate插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证,同时提供了一个用来编写用户自定义方法的 API。所有的捆绑方法默认使用英语作为错误信息,且已翻译成其他 37 种语言。第一节:jQuery ...
  • el-form resetFields无效和validate无效的可能原因及解决方法问题导入简单实例1、官方案例resetFields 失败可能原因2、个人案例resetFields失效及解决办法先添加后编辑先编辑后添加validate失效及解决办法结尾 ...
  • 今天在jsp页面使用jquery.validate.js校验表单时,始终不起作用,找了大半天终于搞定了。。 form标签旁边显示Invalid location of tag,在网上查了下,还是无果,仔细看了之后,发现form表单写在了中, 郁闷呀,把...
  • 如图,调试的时候,我在validate内部打印了一句话,打开调试工具,发现怎么也不执行。调试了半天,终于发现了问题,同事在进行手机号自定义校验的时候没有进行callback回调。callback函数没有执行,validate函数就...
  • Validate验证

    2020-10-30 18:09:43
    jQuery Validate验证框架详解 jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一、导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2...
  • jquery-validate插件之resetForm方法 jquery-validate清除历史错误提示信息
  • 自定义工具类实现validate参数校验

    千次阅读 2021-03-09 02:39:25
    } /** * 静态方法校验使用,并且带分组的 * * @param object * @param group * @return */ public static String validate(Object object, Class group) { if (group == null) { return validate(object);...
  • laravel validate验证参数说明

    千次阅读 2020-10-24 19:40:15
    laravel validate验证参数说明 validate的介绍 validate的使用 validate验证参数说明

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,356
精华内容 16,542
关键字:

validate方法作用

友情链接: Tamrin2.rar