当前位置: 首页 > news >正文

新媒体营销岗位职责安卓优化大师app

新媒体营销岗位职责,安卓优化大师app,自己在线制作logo免费软件下载,模板网站建设源码一、前言 ConstraintValidator是Java Bean Validation(JSR-303)规范中的一个接口,用于实现自定义校验注解的校验逻辑。ConstraintValidator定义了两个泛型参数,分别是注解类型和被校验的值类型。在实现ConstraintValidator接口时&…

一、前言

        ConstraintValidator是Java Bean Validation(JSR-303)规范中的一个接口,用于实现自定义校验注解的校验逻辑。ConstraintValidator定义了两个泛型参数,分别是注解类型和被校验的值类型。在实现ConstraintValidator接口时,需要重写initialize、isValid等方法,并实现具体的校验逻辑。

二、自定义注解校验参数是否为Null

        比如校验参数name不能为null或者空字符串,先编写@interface类ValidNull:

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {NullValidator.class})
public @interface ValidNull {// 默认错误消息String message() default "name不能为空";// 分组Class<?>[] groups() default {};// 负载Class<? extends Payload>[] payload() default {};
}

        再编写校验类 NullValidator:

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;public class NullValidator implements ConstraintValidator<ValidNull, String> {@Overridepublic void initialize(ValidNull constraintAnnotation) {ConstraintValidator.super.initialize(constraintAnnotation);}@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {if (null == value || "".equals(value)){return false;}return true;}
}

        编写实体类NullTest,并在此加上注解:

import lombok.Data;@Data
public class NullTest {@ValidNullprivate String name;
}

         最后在controller层进行调用校验,注意需要在实体类前面加上@Validated 注解,否则校验是不生效的:

    @PostMapping(value = "/test")public RetResult test(@RequestBody @Validated NullTest nullTest) {System.err.println(nullTest.getName());return RetResult.success();}

        测试结果:

        当name有值时,正常通过:

         当name为null时,提示校验错误信息:

        当name为空字符串时, 提示校验错误信息:

 

三、自定义注解校验参数值大小

        比如一个参数是数字,需要校验其大小,方法如下:

        先编写@interface类:

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {NumValidator.class})
public @interface ValidNum {int value();// 默认错误消息String message() default "num不能大于20";// 分组Class<?>[] groups() default {};// 负载Class<? extends Payload>[] payload() default {};
}

        这里有添加value,这个可以在使用该注解时,传参数,下面的默认错误信息,也可以在使用注解时一起使用,只是在没有传参数时默认使用而已。

        编写NumValidator校验类:

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;public class NumValidator implements ConstraintValidator<ValidNum,Integer> {private Integer value;@Overridepublic void initialize(ValidNum constraintAnnotation) {this.value = constraintAnnotation.value();}@Overridepublic boolean isValid(Integer value, ConstraintValidatorContext context) {if(value > this.value){return false;}return true;}
}

        可以看到这里也定义了value,在initialize里面初始化,也就是获取使用该注解的地方传入的值。

        编写实体类NullTest:

import lombok.Data;@Data
public class NumTest {@ValidNum(value = 30, message = "数值不能大于30")private Integer num;
}

        在controller层测试:

    @PostMapping(value = "/test")public RetResult test(@RequestBody @Validated NumTest numTest) {System.err.println(numTest.getNum());return RetResult.success();}

        测试结果:

        当传入参数小于30时:

        当传入参数大于30时:

 

http://www.yayakq.cn/news/104356/

相关文章:

  • 网站建设问题清单工信部备案
  • 手机版传奇发布网站腾讯云域名备案需要提供网站建设方案书
  • 杭州做网站哪家最好计算机网络技术就业方向有哪些
  • 饿了么网站开发泉州市做网站优化
  • 东莞网站建设 南城石佳东莞四网合一网站建设
  • 网站平台建设实训总结佛山网站优化怎么做
  • 临沂网站开发小说网站的内容做
  • 做销售的去哪个网站应聘设计师网上接单之后不给钱可以报警吗
  • 电子商务的概念连云港seo公司
  • 公司网站建设开发维护工作总结网站设计步骤
  • 出口贸易网站前端网站开发上线的流程
  • 网页设计公司网站设计网络游戏带来的危害
  • 吉安建站公司seo优质友链购买
  • 株洲网络公司-网站建设怎么样谈谈我认为的网络营销是什么
  • 公司网站怎么建网站备案需要什么东西
  • 建设网站选什么地方的主机专利交易网站建设ppt
  • 忘记网站后台账号企业查询征信
  • 网站做流量是怎么回事福州百度seo
  • 洪梅镇网站建设点击颜色更换网站主题
  • 郑州企业网站怎么优化佛山出格建站
  • 网站里的个人中心下拉列表怎么做网站建设有哪些常用行为
  • 正规手机网站建设平台html页面模板
  • 微信微博网站建设百度不收录网站
  • 关于做外汇现货的网站wordpress 设置站点地址
  • 合肥的电商网站设计北京市市场监督管理网上服务平台
  • 网站建设合同是否交纳印花税牙膏的网站建设方案
  • 租一个国外的服务器 建设网站中国站长之家域名查询
  • 淮北做网站百度站长工具seo
  • 怎样办网站做宣传wordpress手动升级插件
  • 运城做网站价格做传销网站