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

电子贺卡在线制作网站杭州公司注册网上核名

电子贺卡在线制作网站,杭州公司注册网上核名,衡水教育行业网站建设,新公司网站建设流程在日常开发中经常会用到String类型的数据当作数值进行映射#xff0c;势必会做出数值范围的校验#xff0c;可以通过自定义注解的办法简化代码实现#xff0c;减少冗余代码。 Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy St…在日常开发中经常会用到String类型的数据当作数值进行映射势必会做出数值范围的校验可以通过自定义注解的办法简化代码实现减少冗余代码。  Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy StrRangeValidator.class) public interface StrRange {/*** 错误提示* return*/String message() default value is not in given range;/*** 最小值* return*/double min() default Double.MIN_VALUE;/*** 最大值* return*/double max() default Double.MAX_VALUE;/*** 是否包含边界* return*/boolean closeMin() default true;/*** 是否包含边界* return*/boolean closeMax() default true;/*** 是否可空* return*/boolean nullable() default true;Class?[] groups() default { };Class? extends Payload[] payload() default { }; } 这里的groupspayload是必须的。其他方法是根据需要设定的参数 1. 允许null值跳过校验 2. 边界值开区间、闭区间 3. 自定义errorMessage validatedBy 是核心的验证逻辑 public class StrRangeValidator implements ConstraintValidatorStrRange, String {private boolean nullable;private BigDecimal min;private BigDecimal max;private boolean closeMin;private boolean closeMax;Overridepublic void initialize(StrRange constraintAnnotation) {nullable constraintAnnotation.nullable();min new BigDecimal(String.valueOf(constraintAnnotation.min()));max new BigDecimal(String.valueOf(constraintAnnotation.max()));closeMin constraintAnnotation.closeMin();closeMax constraintAnnotation.closeMax();}Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {if (s null nullable){return true;}try {BigDecimal val new BigDecimal(s);boolean checkMin closeMin ? min.compareTo(val) 0 : min.compareTo(val) 0;boolean checkMax closeMax ? val.compareTo(max) 0 : val.compareTo(max) 0;return checkMin checkMax;} catch (Exception ex) {return false;}} } String到枚举值的反向解析和验证也是比较常见的问题也可以通过自定义注解的方式简化此类解析判断。 再来一个枚举验证 Target({ElementType.FIELD}) Retention(RetentionPolicy.RUNTIME) Constraint(validatedBy ValidEnumValidator.class) public interface ValidEnum {/*** 错误提示* return*/String message() default invalid enum value;/*** 目标类型* return*/Class? target();/*** 是否可空* return*/boolean nullable() default true;Class?[] groups() default { };Class? extends Payload[] payload() default { }; } public class ValidEnumValidator implements ConstraintValidatorValidEnum, String {private Class? clazz;private boolean nullable;Overridepublic void initialize(ValidEnum constraintAnnotation) {nullable constraintAnnotation.nullable();clazz constraintAnnotation.target();}Overridepublic boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {if (!clazz.isEnum()) {return false;}if (s null nullable) {return true;}try {Method method clazz.getDeclaredMethod(of, String.class);return method.invoke(null, s) ! null;} catch (Exception e) {return false;}} } 注意枚举需要保持类型一致String都存在这样的of方法 AllArgsConstructor Getter public enum EAccountAuthTypeEnum {OPEN_ACCOUNT(1, 开户),;private final String code;private final String msg;public static EAccountAuthTypeEnum of(String code) {return Arrays.stream(values()).filter(ele - ele.getCode().equals(code)).findFirst().orElse(null);} }
http://www.w-s-a.com/news/26436/

相关文章:

  • 网站能给企业带来什么上饶市网站建设公司
  • 学做网站卖东西去哪学南宁网站建设gxjzdrj
  • 欧美网站建设案例网站开发 男生
  • 网站正在开发中做电子元器件的网站
  • 做网站搭建的公司中国建设银行官网站u盾证书
  • 大连哪里有手机自适应网站建设公司网站介绍模板 html
  • 佛山模板建站宣传片制作公司电话
  • 文字网站居中能自己做网站接业务吗
  • 免备案自助建站网站广州珈瑶公司是哪一年注册的
  • ps做网站界面wordpress为图片添加圆角
  • seo优化推广业务员招聘seo顾问服务福建
  • 成都私人网站建设seo网站推广方案策划书
  • 广州网站建设工作室wordpress log
  • 网站后台添加wordpress h1标签优化
  • 自己做网站都需要什么高密 网站建设
  • 网站语言选择郑州本地做团购的网站
  • dw网页设计模板图片谷歌wordpress优化
  • 网站seo优化要怎么做礼品公司怎么做网站
  • 做网页网站需要钱吗提供常州微信网站建设
  • 网站建设文化效果广东网站建设哪家有
  • 毕业设计做网站怎样做特别一点在线网页制作软件
  • html网站代码上海这边敲墙拆旧做啥网站的比较多
  • 微网站怎么用在线crm管理系统
  • 中国城乡建设部人力网站首页如何利用某个软件做一个网站
  • 个人承接网站建设wordpress editor
  • 建站主机 wordpress专业的菏泽网站建设公司
  • 网站响应时间 标准网站建设色调的
  • 网站开发的合同网站建设 设计
  • 网站开发设置网页端口申请免费个人网站空间
  • 制作广告网站的步骤云服务器做网站