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

青海西宁学做网站在哪中国优秀网页设计案例

青海西宁学做网站在哪,中国优秀网页设计案例,做按摩网站优化天津,结婚证制作生成器app在日常开发中经常会用到String类型的数据当作数值进行映射,势必会做出数值范围的校验,可以通过自定义注解的办法简化代码实现,减少冗余代码。 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 { };
}

这里的groups,payload是必须的。其他方法是根据需要设定的参数:

1. 允许null值跳过校验

2. 边界值开区间、闭区间

3. 自定义errorMessage

validatedBy 是核心的验证逻辑:

public class StrRangeValidator implements ConstraintValidator<StrRange, 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 ConstraintValidator<ValidEnum, 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.tj-hxxt.cn/news/85233.html

相关文章:

  • 猪八戒网建设网站2500然后她叫我弄500.另外在给他2000数字营销公司排行榜
  • 网站原创内容优化网络营销的认识
  • 无锡网站优化公司最好用的免费建站平台
  • 专做智能化施工的网站seo网站快速整站优化技术
  • 高端网站制网站搜索引擎优化诊断
  • 移动端什么意思黄山seo排名优化技术
  • 推广平台赚钱seo技术培训广东
  • 官方重大项目建设库网站今日武汉最新消息
  • 网站建设完成最新seo自动优化软件
  • h5网站显示的图标怎么做网站搜索引擎优化技术
  • 长春网站建设厂家做个电商平台要多少钱
  • sae做的网站备份如何做好企业推广
  • 网站程序本地测试网站建设及网络推广
  • ppt下载免费网站交换链接是什么意思
  • 响应式网站的优缺点优化设计
  • 做数独网站能挣钱吗网络服务包括哪些内容
  • 做餐饮系统网站厦门网站搜索引擎优化
  • 怎么下载网站动态图片如何引流推广产品
  • wordpress后台字体seo全网推广营销软件
  • 长兴企业网站开发百度知道网址
  • 自己做网站出口软件定制开发公司
  • 番禺区网站建设小程序
  • 国际网站群建设方案深圳全网推广方案
  • 搭建动态网站视频广告联盟平台
  • 长春做网站哪家公司好长沙有实力seo优化公司
  • 做分色找工作网站seo赚钱方法大揭秘
  • 建设银行广东分行网站发外链软件
  • 做网站的企业专门的网页制作工具有
  • 资阳公司网站建设官网seo怎么做
  • 免费制作论坛网站站优化