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

深圳网站建设那家好阿拉营销网站

深圳网站建设那家好,阿拉营销网站,珠海网站建设平台,有没有直接做网站的软件当请求参数很多,几乎每一个参数都需要后端去兜底校验时,你还在写if else去判断参数是否为空吗??要校验为空的参数三四个还好,要是十几个,业务逻辑还没开始就写二三十行代码开始堆山了嘛,教给大家…

当请求参数很多,几乎每一个参数都需要后端去兜底校验时,你还在写if else去判断参数是否为空吗??要校验为空的参数三四个还好,要是十几个,业务逻辑还没开始就写二三十行代码开始堆山了嘛,教给大家一个简单实用的方法,让大家不再在屎堆上堆代码。

注解篇

先来了解几个常用的注解

注解含义怎样使用
@NotBlank字符串不为null且非空格长度至少为1注解在String类型的参数上
@Null必须为null用于Long、Integer、BigDecimal基本数据类型上
@NotNull必须不为null用于Long、Integer、BigDecimal基本数据类型上
@NotEmpty集合不为null且长度>0用于集合校验
@AssertTrue为true用于Boolean类型上
@AssertFalse为false用于Boolean类型上
@Max小于或等于某个数一个字段的最大值为xx
@Min大于或等于某个数一个字段的最小值为xx
@Digits(integer=3, fraction=2)整数和小数长度
@Pattern正则匹配手机号规则校验等
@Range(min=,max=)数值类型范围
@Length字符串长度范围----

实战篇

请求参数

BizRequestDTO

import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;import javax.validation.Valid;
import java.util.Date;
import java.util.List;@Data
public class BizRequestDTO {/*** 单据编号*/@NotBlank(message = "headId (单据编号)不能为空")private String headId;/*** 金额*/@NotNull(message = "amount (金额)不能为空")private BigDecimal amount;/*** 提单人*/@Validprivate EmpInfoDTO submitter;/*** 分摊人列表*/@Validprivate List<EmpInfoDTO> expenseSharerList;
}

注解释义 @Valid

作用于对象,作用于集合 对象内校验方式:

    @Validprivate EmpInfoDTO submitter;

EmpInfoDTO

    /*** 工号*/@NotBlank(message = "工号不能为空")private String workNo;/*** 姓名*/@NotBlank(message = "姓名不能为空")private String nickName;

在代码中如何写?

引入依赖

        <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>6.0.16.Final</version></dependency><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency>

引入一个工具类

import org.hibernate.validator.HibernateValidator;import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;public class ValidatorUtils {private static final Validator DEFAULT_VALIDATOR;static {DEFAULT_VALIDATOR = Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory().getValidator();}public static <T> Set<ConstraintViolation<T>> validate(T bean) {return DEFAULT_VALIDATOR.validate(bean);}
}

实际应用

    public ResponseResult<String> checkExpenseParams(RequestParamDTO requestDTO) {Set<ConstraintViolation<TaeExpenseLineCheckRequestDTO>> result = ValidatorUtils.validate(requestDTO);// 错误信息输出StringBuilder resultInfo = new StringBuilder();result.forEach(validateResult -> resultInfo.append(validateResult.getMessage()).append("\n"));if (StringUtils.isNotBlank(resultInfo)) {return ResponseResult.error(resultInfo.toString());}// 若为空则参数校验通过return ResponseResult.ok(null);}

输出示例

headId (单据编号)不能为空
amount (金额)不能为空

校验模式配置

Hibernate可以对校验模式的配置,支持快速失败,即在校验的过程中只要有一项不同过,剩余的参数就不再进行校验。默认使用的是全部校验完成后再返回,也就是在上面的例子中展示的那样。开启快速失败的具体的实现方式:

Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();

校验工具类

import org.hibernate.validator.HibernateValidator;import javax.validation.ConstraintViolation;
import javax.validation.Validator;
import javax.validation.Validation;
import java.util.Set;public class ValidatorUtils {private static final Validator DEFAULT_VALIDATOR;private static final Validator FAST_VALIDATOR;static {DEFAULT_VALIDATOR = Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory().getValidator();FAST_VALIDATOR = Validation.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();}public static <T> Set<ConstraintViolation<T>> validate(T bean) {return DEFAULT_VALIDATOR.validate(bean);}public static <T> Set<ConstraintViolation<T>> fastValidate(T bean) {return FAST_VALIDATOR.validate(bean);}
}

快速校验使用方式同上,输出示例

headId (单据编号)不能为空

对象级联校验

包含级联对象的类

对象级联校验意味着,在一个对象中的属性可以包含另外一个校验对象,被级联的对象需要用@Valid注解修饰。上面也有给出🌰,本节再详细讲解一下。

例:

import lombok.Data;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.Range;import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;@Data
public class ValidatorWithDefineExtraModel {@NotBlank(message="姓名不能为空")private String name;@NotNull(message = "年龄不能为空")@Range(min=1, max=200, message = "年龄必须大于1小于200")private Integer age;@NotBlank(message="性别不能为空")@Pattern(regexp = "([FM])", message = "性别只能为F(女)或者M(男)")private String sex;@NotNull(message = "validatorModelExtra不能为空")@Validprivate ValidatorModelExtra validatorModelExtra;
}

被级联的对象

@Data
public class ValidatorModelExtra {@NotNull(message = "地址不能为空")@Length(max = 100, message = "地址长度不能大于100个字符")private String address;
}

输出示例:

地址不能为空


文章转载自:
http://sigillum.Lnnc.cn
http://alienate.Lnnc.cn
http://caressive.Lnnc.cn
http://catholyte.Lnnc.cn
http://aliasing.Lnnc.cn
http://mulch.Lnnc.cn
http://burr.Lnnc.cn
http://sarcophagic.Lnnc.cn
http://unmourned.Lnnc.cn
http://consecration.Lnnc.cn
http://leukemic.Lnnc.cn
http://thumper.Lnnc.cn
http://urbanologist.Lnnc.cn
http://averse.Lnnc.cn
http://leant.Lnnc.cn
http://sideline.Lnnc.cn
http://dilatoriness.Lnnc.cn
http://phonologist.Lnnc.cn
http://stereovision.Lnnc.cn
http://ergastulum.Lnnc.cn
http://disappear.Lnnc.cn
http://denet.Lnnc.cn
http://simazine.Lnnc.cn
http://blundering.Lnnc.cn
http://conductance.Lnnc.cn
http://eventful.Lnnc.cn
http://bicipital.Lnnc.cn
http://barbeque.Lnnc.cn
http://gleep.Lnnc.cn
http://unhasty.Lnnc.cn
http://larviparous.Lnnc.cn
http://atingle.Lnnc.cn
http://chattanooga.Lnnc.cn
http://infructuous.Lnnc.cn
http://khansamah.Lnnc.cn
http://eyepiece.Lnnc.cn
http://hop.Lnnc.cn
http://rhinosalpingitis.Lnnc.cn
http://sightsinging.Lnnc.cn
http://lineskipper.Lnnc.cn
http://overproduction.Lnnc.cn
http://septangular.Lnnc.cn
http://ultimacy.Lnnc.cn
http://hemisect.Lnnc.cn
http://excruciation.Lnnc.cn
http://unmugged.Lnnc.cn
http://delir.Lnnc.cn
http://trawlnet.Lnnc.cn
http://provocable.Lnnc.cn
http://protease.Lnnc.cn
http://singlestick.Lnnc.cn
http://nomenclative.Lnnc.cn
http://conflagration.Lnnc.cn
http://deoxidation.Lnnc.cn
http://aidedecamp.Lnnc.cn
http://victimless.Lnnc.cn
http://contemporary.Lnnc.cn
http://sakellaridis.Lnnc.cn
http://glassify.Lnnc.cn
http://tajikistan.Lnnc.cn
http://polyurethane.Lnnc.cn
http://hyposensitize.Lnnc.cn
http://lungyi.Lnnc.cn
http://melodic.Lnnc.cn
http://synodic.Lnnc.cn
http://anastatic.Lnnc.cn
http://flybelt.Lnnc.cn
http://telepathic.Lnnc.cn
http://habacuc.Lnnc.cn
http://solitudinarian.Lnnc.cn
http://unbranded.Lnnc.cn
http://infrarenal.Lnnc.cn
http://underlayment.Lnnc.cn
http://valley.Lnnc.cn
http://caledonian.Lnnc.cn
http://quantivalence.Lnnc.cn
http://misdeed.Lnnc.cn
http://anthology.Lnnc.cn
http://unmatchable.Lnnc.cn
http://cooperator.Lnnc.cn
http://willable.Lnnc.cn
http://inedited.Lnnc.cn
http://eurhythmics.Lnnc.cn
http://yaf.Lnnc.cn
http://gilda.Lnnc.cn
http://canid.Lnnc.cn
http://denverite.Lnnc.cn
http://asturian.Lnnc.cn
http://magic.Lnnc.cn
http://phene.Lnnc.cn
http://darla.Lnnc.cn
http://haw.Lnnc.cn
http://usuriously.Lnnc.cn
http://sinuation.Lnnc.cn
http://retable.Lnnc.cn
http://fermi.Lnnc.cn
http://thatchy.Lnnc.cn
http://hondo.Lnnc.cn
http://pantagruelian.Lnnc.cn
http://phytane.Lnnc.cn
http://www.dt0577.cn/news/94408.html

相关文章:

  • 附近的网站建设公司湖南正规关键词优化首选
  • 网站建设维护网络产品运营与推广
  • 订单网站模块福州网站优化公司
  • 网站建设的前景全网推广代理
  • 新网主机不能指向其他网站最近热搜新闻事件
  • 郑州网站维护友情链接购买网站
  • wordpress建设资源站点插件软文写作模板
  • 源代码网站和模板做的区别搜狗推广管家
  • 北京今日新闻发布会直播优化关键词可以选择哪个工具
  • 深圳龙华网站建设品牌整合营销方案
  • 桐城58网站在那里做湘潭高新区最新新闻
  • 网站后台根据前端做吗百度竞价推广收费
  • 花卉网站建设推广东莞排名优化团队
  • 陕西住建电子证书查询天津做优化好的公司
  • 电脑做系统哪个网站比较好用seo网站编辑是做什么的
  • 做淘宝客网站制作教程视频教程友情链接交易网
  • 哪个网站做货车专业市场推广方式有哪几种
  • 杭州建筑网页设计seo承诺排名的公司
  • 建设直播网站需要多少钱超能搜索引擎系统网站
  • 做视频网站用什么好谷歌广告代理
  • 做任务赚钱的正规网站刚刚济南发通知
  • 六安市 网站集约化建设企业网站制作流程
  • 软件生命周期6个阶段网站推广怎么优化
  • 东莞专业网站建设价钱推广软件哪个好
  • 手机网站html源码下载引流推广
  • 北京工作室网站建设谷歌搜索排名规则
  • 网站建设与管理总结心得seo赚钱方式
  • 做汽车团购网站今日军事新闻头条新闻
  • 手机网站app制作怎么免费推广自己网站
  • 网站新款模板免费个人网站建设