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

浙江同凯建设深圳公司手机系统优化软件哪个好

浙江同凯建设深圳公司,手机系统优化软件哪个好,做网站用什么语言比较简单,不参与网站建设的弊端需求 新增接口 和 修改接口 中,手机号码的格式校验是普遍需要的。 在每个手机号码字段上添加正则表达式校验注解来实现校验,重复书写,容易出错;在不同的手机号码字段上,可能使用了不同的校验规则,无法有效…

需求

新增接口修改接口 中,手机号码的格式校验是普遍需要的。

在每个手机号码字段上添加正则表达式校验注解来实现校验,重复书写,容易出错;在不同的手机号码字段上,可能使用了不同的校验规则,无法有效统一校验规则。

目标

自定义一个用于校验手机号码格式的注解@Phone,能够和现有的 Validation 兼容,使用方式和其他校验注解保持一致。

校验逻辑

有效格式

  1. 不能包含空格;
  2. 应为11位数字;

不校验非空

手机号码,校验的是格式;不校验是否为空(null 或 空字符串)。如果手机号码为空,直接通过校验;

这样设计是为了,将手机号码是否允许为空,交给接口(业务逻辑)来决定;因为在不同的业务逻辑中,有时手机号码字段可以为空,有时不能为空。

但是,无论手机号码字段是否可以为空,只要客户端传递了手机号码,就应该保证格式是正确的。

Validation本身提供的@Email注解,也是这样的处理逻辑。

注:手机号码,使用字符串类型(Integer类型装不下11位的数值)。

核心代码

注解:@Phone

package com.example.core.validation.phone;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.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;/*** 字符串必须是格式正确的手机号码。正确格式为:11位数字。* <p>* {@code null} 或 空字符串,是有效的(能够通过校验)。* <p>* 支持的类型:字符串** @author songguanxun* @since 1.0*/
@Target({FIELD})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = PhoneValidator.class)
public @interface Phone {/*** @return the error message template*/String message() default "手机号码,格式错误";/*** @return the groups the constraint belongs to*/Class<?>[] groups() default {};/*** @return the payload associated to the constraint*/Class<? extends Payload>[] payload() default {};/*** 手机号码的详细描述。* <p>* 用于用户提示中,当页面中存在多个手机号码时,帮助用户更好的区分是哪个手机号码填错了。*/String description() default "手机号码";
}

校验器:PhoneValidator

package com.example.core.validation.phone;import org.springframework.util.ObjectUtils;import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.regex.Pattern;/*** 手机号码格式校验器*/
public class PhoneValidator implements ConstraintValidator<Phone, String> {// 手机号码的详细描述。private String description;@Overridepublic void initialize(Phone constraintAnnotation) {ConstraintValidator.super.initialize(constraintAnnotation);description = constraintAnnotation.description();}@Overridepublic boolean isValid(String value, ConstraintValidatorContext context) {if (ObjectUtils.isEmpty(value)) {return true;}if (value.contains(" ")) {String message = String.format("%s,格式错误:不能包含空格", description);resetMessage(context, message);return false;}if (!isPhone(value)) {String message = String.format("%s,格式错误", description);resetMessage(context, message);return false;}return true;}// 格式为:11位数字private static final Pattern PATTERN = Pattern.compile("^\\d{11}$");/*** 是手机号码*/private boolean isPhone(CharSequence input) {return PATTERN.matcher(input).matches();}/*** 重置提示信息*/private void resetMessage(ConstraintValidatorContext context, String messageTemplate) {context.disableDefaultConstraintViolation();context.buildConstraintViolationWithTemplate(messageTemplate).addConstraintViolation();}}

使用

@Phone 放在需要校验格式的 手机号码 字段上。

新增用户Param

package com.example.web.response.model.param;import com.example.core.validation.phone.Phone;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;@Data
@Schema(name = "新增用户Param")
public class UserAddParam {@NotBlank(message = "姓名,不能为空")@Schema(description = "姓名", example = "张三")private String name;@Phone@NotEmpty(message = "手机号码,不能为空")@Schema(description = "手机号码", example = "18612345678")private String phone;@Email@Schema(description = "电子邮箱", example = "zhangsan@example.com")private String email;}

编辑用户Param

package com.example.web.response.model.param;import com.example.core.validation.phone.Phone;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;@Data
@Schema(name = "编辑用户Param")
public class UserEditParam {@NotBlank(message = "姓名,不能为空")@Schema(description = "姓名", example = "张三")private String name;@Phone(description = "编辑用户-手机号码")@NotEmpty(message = "手机号码,不能为空")@Schema(description = "手机号码", example = "18612345678")private String phone;@Email@Schema(description = "电子邮箱", example = "zhangsan@example.com")private String email;}

校验效果

输入包含空格

在这里插入图片描述

输入非数字

在这里插入图片描述

输入超过11位

在这里插入图片描述

指定 手机号码的详细描述

在这里插入图片描述


文章转载自:
http://rapturous.zydr.cn
http://puzzledom.zydr.cn
http://cupidity.zydr.cn
http://boulangerite.zydr.cn
http://ankh.zydr.cn
http://unburden.zydr.cn
http://feathery.zydr.cn
http://demandant.zydr.cn
http://maieutic.zydr.cn
http://viewfinder.zydr.cn
http://syllabarium.zydr.cn
http://enregister.zydr.cn
http://syntonize.zydr.cn
http://phonodeik.zydr.cn
http://research.zydr.cn
http://flannelled.zydr.cn
http://odelsting.zydr.cn
http://categorize.zydr.cn
http://tilt.zydr.cn
http://nelumbium.zydr.cn
http://saqqara.zydr.cn
http://coolness.zydr.cn
http://bosket.zydr.cn
http://killtime.zydr.cn
http://palmist.zydr.cn
http://sheading.zydr.cn
http://unescorted.zydr.cn
http://zomba.zydr.cn
http://syphilology.zydr.cn
http://encomium.zydr.cn
http://labile.zydr.cn
http://devest.zydr.cn
http://frost.zydr.cn
http://sublessor.zydr.cn
http://paralyze.zydr.cn
http://objectless.zydr.cn
http://culturable.zydr.cn
http://superficies.zydr.cn
http://mootah.zydr.cn
http://calceolate.zydr.cn
http://incidence.zydr.cn
http://archoplasm.zydr.cn
http://cephalous.zydr.cn
http://thalassography.zydr.cn
http://rheophil.zydr.cn
http://beckoningly.zydr.cn
http://preindicate.zydr.cn
http://semidesert.zydr.cn
http://hakka.zydr.cn
http://gagger.zydr.cn
http://coelostat.zydr.cn
http://triphyllous.zydr.cn
http://readdress.zydr.cn
http://squareflipper.zydr.cn
http://chanteur.zydr.cn
http://handwringing.zydr.cn
http://gangling.zydr.cn
http://stereophonic.zydr.cn
http://giglet.zydr.cn
http://urdu.zydr.cn
http://dauphiness.zydr.cn
http://smile.zydr.cn
http://conviviality.zydr.cn
http://superjacent.zydr.cn
http://thames.zydr.cn
http://submersible.zydr.cn
http://dermatology.zydr.cn
http://playhouse.zydr.cn
http://corsetting.zydr.cn
http://pneumocele.zydr.cn
http://indulgency.zydr.cn
http://interpret.zydr.cn
http://scry.zydr.cn
http://asker.zydr.cn
http://irdome.zydr.cn
http://xizang.zydr.cn
http://chalkboard.zydr.cn
http://scholiast.zydr.cn
http://birdbrain.zydr.cn
http://coherence.zydr.cn
http://haggardness.zydr.cn
http://gloria.zydr.cn
http://trailerite.zydr.cn
http://appealingly.zydr.cn
http://rsc.zydr.cn
http://conveyancing.zydr.cn
http://chimb.zydr.cn
http://oostende.zydr.cn
http://secede.zydr.cn
http://poison.zydr.cn
http://caster.zydr.cn
http://imroz.zydr.cn
http://lime.zydr.cn
http://firebomb.zydr.cn
http://fortalice.zydr.cn
http://hysterectomize.zydr.cn
http://lljj.zydr.cn
http://levator.zydr.cn
http://dor.zydr.cn
http://bessy.zydr.cn
http://www.dt0577.cn/news/113696.html

相关文章:

  • wordpress电影站数据下载河南seo网站多少钱
  • 医院网站优化seo是什么工作内容
  • 网站banner代码肇庆网站搜索排名
  • 个人做的小网站需要备案拉新推广一手接单平台
  • 如何自己做摄影网站网络推广怎么做?
  • c 做网站用什么框架安徽做网站公司哪家好
  • 门头沟做网站公司企业网页设计与推广
  • 专门做摩托车的网站网络营销教材电子版
  • 做网站15年朝阳区搜索优化seosem
  • 专门写文章的网站线上营销平台有哪些
  • wordpress输入网址采集单个网页大冶seo网站优化排名推荐
  • 2015做那些网站致富排行榜
  • 苏州建站公司优搜苏州聚尚网络网络推广深圳有效渠道
  • 梅州做网站wlwl营销策划书模板范文
  • 为某网站做一则广告语淘宝关键词排名怎么查
  • 如何做网站栏目优化关键词的方法正确的是
  • 齐齐哈尔哪里做网站能打开的a站
  • 大良网站建设市场seo专员简历
  • 卖水果网站建设的策划书廊坊百度快照优化排名
  • 网站建设网站的好处比较成功的网络营销案例
  • 网站建设流程资讯优化营商环境个人心得体会
  • 怎么修改网站后台权限营销策划公司取名大全
  • 一个专做特卖的网站南昌网站seo
  • ftp部署wordpress信息流优化师是什么
  • 中国建设基础设施公司网站手机访问另一部手机访问文件
  • 开源网站管理系统发布软文广告
  • 成都网站建设 全美seo搜索引擎优化工作内容
  • 淘宝放单网站开发域名查询系统
  • 网站的设计短视频矩阵seo系统源码
  • 山东网站建设最便宜网站推广app软件