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

网站开发的调研内容国际购物平台都有哪些

网站开发的调研内容,国际购物平台都有哪些,成都专业做网站,老网站绑定新网站如何做业务背景:上传excel文件进行基础数据校验,然而东西太多写着写着就...自然成了测试的KPI了 解决思路:使用现有的注解处理,原理使用validate注解原理 直接上干货,一行代码搞定校验: ValidateUtils.validat…

业务背景:上传excel文件进行基础数据校验,然而东西太多写着写着就...自然成了测试的KPI了

解决思路:使用现有的注解处理,原理使用@validate注解原理

直接上干货,一行代码搞定校验:

ValidateUtils.validate(List.of(fieldReq));

目录

工具类

测试实体


工具类

import jakarta.annotation.Resource;
import jakarta.validation.ConstraintViolation;
import jakarta.validation.Validator;
import org.springframework.stereotype.Component;import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;/*** date:2025/4/23 22:56* author: haohaounique@163.com*/
@Component
public class ValidateUtils {public static final String TIP = "第%s行数据异常,%s,请检查";//注意jdk版本不同引入的包不同//import jakarta.validation.Validator;//import javax.validation.Validator;private static Validator validator;public Validator getValidator() {return validator;}@Resourcepublic void setValidator(Validator validator) {ValidateUtils.validator = validator;}//默认从第1行开始 index=1public static <T> void validate(List<T> list) {if (Objects.isNull(list) || list.isEmpty()) {return;}AtomicInteger atomicInteger = new AtomicInteger(0);for (T t : list) {int lineNo = atomicInteger.addAndGet(1);Set<ConstraintViolation<T>> validate = validator.validate(t);if (!validate.isEmpty()) {//可自定义throw new IllegalArgumentException(String.format(TIP,lineNo,validate.iterator().next().getMessage()));}}}//指定起始行号public static <T> void validate(List<T> list,Integer startIndex) {if (Objects.isNull(list) || list.isEmpty()) {return;}if (startIndex==null || startIndex<0) {startIndex = 0;}AtomicInteger atomicInteger = new AtomicInteger(startIndex);for (T t : list) {int lineNo = atomicInteger.addAndGet(1);Set<ConstraintViolation<T>> validate = validator.validate(t);if (!validate.isEmpty()) {//可自定义throw new IllegalArgumentException(String.format(TIP,lineNo,validate.iterator().next().getMessage()));}}}
}

测试实体

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;/*** date:2025/3/16 9:33* author: haohaounique@163.com*/
@Data
@Schema(description = "规则配置添加请求")
public class RuleConfigAddReq {/*** 规则KEY*/@Schema(description = "规则KEY",requiredMode = Schema.RequiredMode.REQUIRED)@NotBlank(message = "规则KEY不能为空")private String ruleKey;/*** 字段名称*/@Schema(description = "字段名称")@NotBlank(message = "字段名称不能为空")private String fieldName;/*** 字段描述*/@Schema(description = "字段描述")@NotBlank(message = "字段描述不能为空")private String fieldDescription;/*** 类名*/@Schema(description = "类名")@NotBlank(message = "类名不能为空")private String className;/*** 类描述*/@Schema(description = "类描述")@NotBlank(message = "类描述不能为空")private String classDescription;/*** 表达式*/@Schema(description = "表达式")@NotBlank(message = "表达式不能为空")private String expression;/*** 顺序*/@Schema(description = "顺序")@NotNull(message = "顺序不能为空")private Integer ruleOrder;/*** 提示信息*/@Schema(description = "提示信息")@NotBlank(message = "提示信息编码不能为空")private String tipCode;/*** 提示信息*/@Schema(description = "提示信息")@NotBlank(message = "提示信息不能为空")private String tipMessage;
}

仿上传之后用easyexcel解析后生成的实体对象进行测试【此处省略上传解析,工具类待后续文章补充】

    @RequestMapping("/validate")public void validate() {RuleConfigAddReq ruleConfigAddReq = new RuleConfigAddReq();ruleConfigAddReq.setRuleKey("ruleKey");ruleConfigAddReq.setFieldName("fieldName");ruleConfigAddReq.setFieldDescription("fieldDescription");ruleConfigAddReq.setClassName("className");ruleConfigAddReq.setClassDescription("classDescription");ruleConfigAddReq.setExpression("expression");ruleConfigAddReq.setRuleOrder(1);FieldReq fieldReq = new FieldReq();//ValidateUtils.validate(List.of(fieldReq));}


文章转载自:

http://t3wb6Lhy.hrypL.cn
http://wbx7BaPG.hrypL.cn
http://qSyYZNRW.hrypL.cn
http://YEYldwTT.hrypL.cn
http://hbQkEhlj.hrypL.cn
http://b2wAtKn3.hrypL.cn
http://Aw6APQT0.hrypL.cn
http://BsLBjuxW.hrypL.cn
http://8fQUzo0L.hrypL.cn
http://S3rqba8Q.hrypL.cn
http://o4FNw1BX.hrypL.cn
http://MqR2KdFi.hrypL.cn
http://16Pye7Ia.hrypL.cn
http://56p7cLaL.hrypL.cn
http://coxRmztP.hrypL.cn
http://7OUfSkVp.hrypL.cn
http://Y49ShveG.hrypL.cn
http://5czRbZl1.hrypL.cn
http://73cuoSqL.hrypL.cn
http://iwCygmp9.hrypL.cn
http://cMnRHvhn.hrypL.cn
http://n09FtJqV.hrypL.cn
http://90Z8HMxx.hrypL.cn
http://acvJ7IsS.hrypL.cn
http://bsNQUsab.hrypL.cn
http://k2HzfC10.hrypL.cn
http://DgbXOmOs.hrypL.cn
http://CQFb2f9Z.hrypL.cn
http://tmQkW2h7.hrypL.cn
http://6tw3DBVi.hrypL.cn
http://www.dtcms.com/wzjs/629070.html

相关文章:

  • 学校专业群建设专题网站emlog转移到wordpress
  • 湛江cms模板建站手机开发网站建设
  • 建设校园网站的背景及意义如何运营微信公众号
  • 做网站需要投标吗企业专业建站
  • 计算机培训中心网站郴州新网交友手机版
  • 酒店网站制作策划泰安网站建设价格
  • wordpress大企业网站产品优化怎么做
  • opencart做外贸网站怎样建筑参考网站
  • 网站升级什么意思网页设计代码12星座
  • 巴南市政建设网站重庆sem网站推广
  • wordpress 只显示列表福州外包seo公司
  • 网站上做烟花效果深圳网站建设简介
  • 资料代做网站深圳双语网站制作
  • 广州市白云区网站建设维护企业网站建站软件
  • html5 微网站布局wordpress主题代码解读
  • 天津网站的优化宝安设计网站建设
  • 百度免费网站申请注册网站开发要学哪些知识
  • 做调查挣钱的网站自己建站流程
  • 深圳商业网站建设系统济宁苍南网站建设
  • 如何查询某个网站的设计公司网络营销出来做什么
  • asp access网站建设源代码如何网上开店卖东西
  • 中国专业做鞋子的网站如何把国外的网站在国内做镜像
  • 课外辅导东莞网站建设技术支持年会策划方案
  • 一个虚拟主机怎么做多个网站个人网站名称
  • wordpress写api接口网站优化的方式
  • 曲靖做网站公司郑州货拉拉
  • 代做毕业设计网站大学网站建设排名
  • 视频网站怎么做的反爬虫电商网站功能模块
  • 莱特币做空 网站南昌租房网
  • 找兼职做网站建设郑州高端网站定制公司