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

推广网站怎么做能增加咨询网站制作外包

推广网站怎么做能增加咨询,网站制作外包,成免费的crm,企业网站内容管理以下是关于 javax.validation.constraints(现为 ​Jakarta Bean Validation)的详细说明,涵盖核心注解、使用场景、代码示例及最佳实践: 一、javax.validation.constraints 是什么? ​作用​:提供一组标准注…

以下是关于 javax.validation.constraints(现为 ​Jakarta Bean Validation)的详细说明,涵盖核心注解、使用场景、代码示例及最佳实践:


一、javax.validation.constraints 是什么?

  • 作用​:提供一组标准注解,用于对 Java Bean 的字段或方法参数进行数据校验(如非空、长度、范围等)。
  • 规范演进​:
    • Java EE 时期:包名为 javax.validation.constraints
    • Jakarta EE 9+:包名迁移为 jakarta.validation.constraints(需注意依赖兼容性)。

二、核心注解列表及用法

1. 常用注解
注解校验规则支持类型
@NotNull值不能为 null任意类型
@NotBlank字符串不能为空或纯空格String
@NotEmpty集合/数组/字符串不能为空(长度 > 0)Collection, String
@Size(min, max)元素数量或字符串长度在指定范围内集合、数组、字符串
@Min(value)数值必须 ≥ 指定最小值数值类型(int, long 等)
@Max(value)数值必须 ≤ 指定最大值同上
@DecimalMin(value)数值必须 ≥ 指定最小值(字符串形式,支持精度)BigDecimal, String
@DecimalMax(value)数值必须 ≤ 指定最大值(字符串形式,支持精度)同上
@Digits(integer, fraction)数值整数部分最多 integer 位,小数部分最多 fraction数值类型
@Pattern(regexp)字符串必须匹配正则表达式String
@Email字符串必须是合法邮箱格式String
@Positive / @PositiveOrZero数值必须为正数或零数值类型
@Negative / @NegativeOrZero数值必须为负数或零数值类型
@Future / @FutureOrPresent日期必须在未来(或包含当前)Date, LocalDate
@Past / @PastOrPresent日期必须在过去(或包含当前)同上
2. 注解示例代码
public class User {@NotBlank(message = "用户名不能为空")private String username;@Email(message = "邮箱格式无效")private String email;@Size(min = 6, max = 20, message = "密码长度需在6-20位之间")private String password;@Min(value = 18, message = "年龄必须≥18岁")@Max(value = 100, message = "年龄必须≤100岁")private Integer age;@Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式无效")private String phone;
}

三、集成到 Spring Boot 中的步骤

1. 添加依赖
<!-- Spring Boot 2.x 使用 javax.validation -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
</dependency><!-- Jakarta EE 9+ 使用 jakarta.validation -->
<dependency><groupId>jakarta.validation</groupId><artifactId>jakarta.validation-api</artifactId><version>3.0.2</version>
</dependency>
2. 在 Controller 中触发校验

使用 @Valid@Validated 注解触发校验:

@PostMapping("/users")
public ResponseEntity<?> createUser(@RequestBody @Valid User user) {// 校验通过后执行业务逻辑return ResponseEntity.ok("用户创建成功");
}
3. 处理校验异常

通过 @ExceptionHandler 捕获 MethodArgumentNotValidException

@RestControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(MethodArgumentNotValidException.class)public ResponseEntity<Map<String, String>> handleValidationException(MethodArgumentNotValidException ex) {Map<String, String> errors = new HashMap<>();ex.getBindingResult().getAllErrors().forEach(error -> {String fieldName = ((FieldError) error).getField();String errorMessage = error.getDefaultMessage();errors.put(fieldName, errorMessage);});return ResponseEntity.badRequest().body(errors);}
}

四、高级用法

1. 分组校验

通过分组接口实现不同场景下的差异化校验:

// 定义分组接口
public interface CreateGroup {}
public interface UpdateGroup {}public class User {@NotNull(groups = UpdateGroup.class)private Long id;@NotBlank(groups = {CreateGroup.class, UpdateGroup.class})private String name;
}// 在 Controller 中指定分组
@PostMapping("/users")
public ResponseEntity<?> createUser(@RequestBody @Validated(CreateGroup.class) User user) { ... }
2. 自定义校验注解

实现自定义校验逻辑(如密码强度校验):

@Target({FIELD})
@Retention(RUNTIME)
@Constraint(validatedBy = PasswordValidator.class)
public @interface StrongPassword {String message() default "密码必须包含大小写字母和数字";Class<?>[] groups() default {};Class<? extends Payload>[] payload() default {};
}public class PasswordValidator implements ConstraintValidator<StrongPassword, String> {@Overridepublic boolean isValid(String password, ConstraintValidatorContext context) {return password.matches("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).+$");}
}
3. 级联校验

校验对象内的嵌套对象:

public class Order {@Validprivate List<@Valid Product> products; // 校验每个 Product 的字段
}

五、校验失败的错误消息定制

1. 默认消息模板

每个注解的 message 属性支持占位符:

@Size(min = 6, max = 20, message = "密码长度需在{min}-{max}位之间")
private String password;
2. 国际化消息

messages.propertiesValidationMessages.properties 中定义:

user.email.invalid=邮箱格式无效

注解中使用:

@Email(message = "{user.email.invalid}")
private String email;

六、常见问题与解决方案

问题解决方案
校验未生效检查是否添加了 @Valid@Validated 注解;确认依赖已正确引入
嵌套对象校验失败在嵌套对象字段上添加 @Valid 注解
分组校验不生效@Validated 注解中明确指定分组接口
自定义校验器未触发确认 @Constraint(validatedBy = MyValidator.class) 并实现 ConstraintValidator

七、总结

  • 核心价值​:通过声明式注解简化数据校验逻辑,减少样板代码。
  • 最佳实践​:
    • 优先使用标准注解,避免重复造轮子。
    • 结合分组校验实现多场景复用。
    • 统一处理校验异常,返回清晰的错误信息。
  • 扩展性​:通过自定义注解和校验器满足复杂业务需求。

文章转载自:

http://5fXQEATW.hbkkc.cn
http://tmHlgaRG.hbkkc.cn
http://rdANdZlR.hbkkc.cn
http://xln5zdZe.hbkkc.cn
http://3IJa5EiT.hbkkc.cn
http://ONeTcJoN.hbkkc.cn
http://qILGLlSt.hbkkc.cn
http://JVraBuNm.hbkkc.cn
http://uUzHkr9y.hbkkc.cn
http://iZoS24AN.hbkkc.cn
http://G9oBzPfF.hbkkc.cn
http://oRntnRDo.hbkkc.cn
http://6zux0EqV.hbkkc.cn
http://uQ05IJUC.hbkkc.cn
http://Sp7EuANv.hbkkc.cn
http://QZ5ZFHUF.hbkkc.cn
http://C0Bha0hV.hbkkc.cn
http://lMKzdXmE.hbkkc.cn
http://Fuy5cRIi.hbkkc.cn
http://yrTezvKA.hbkkc.cn
http://hPkha2Ww.hbkkc.cn
http://zKg38QwK.hbkkc.cn
http://JvDAt3xA.hbkkc.cn
http://0DsXD5HR.hbkkc.cn
http://BirJgts6.hbkkc.cn
http://vacd2fHO.hbkkc.cn
http://nS3ld6HG.hbkkc.cn
http://ZjxXkxEg.hbkkc.cn
http://Tics8Z5y.hbkkc.cn
http://b5OOerpf.hbkkc.cn
http://www.dtcms.com/wzjs/642089.html

相关文章:

  • 购物网站源码下载站长工具永久更新
  • 网站备案幕布照片wordpress服务器镜像
  • 河南5G网站基站建设信息网站服务公司
  • 成都网站建设冠辰广告公司的网站建设
  • 网站建设推进会讲话稿建手机网站公司
  • 深圳网站设计x程序东莞网络推广外包托管
  • 营销型网站设计注意查询网网站
  • 网站代码 公告栏 php关键词优化一年多少钱
  • 常州市金坛区网站建设wordpress主题修改头部
  • 杭州门户网站建设微信小程序代码大全
  • 怎么给设计网站推广南京网站搭建
  • dede小说网站模板下载网站全屏广告
  • 代理加盟网站asp.net做网站视频
  • 做外账要登什么网站郑州商城网站制作
  • 无水印做海报的网站东莞南城网站设计
  • 网站开发公司地址wordpress匿名头像
  • 住房和城乡建设部执法网站在服务器网站上做跳转页面
  • 高培淇自己做的网站凡客诚品倒闭了吗
  • 网站建设步骤电脑2018年期刊网站建设调查
  • 网站问责建设书wordpress 如何修改模板底部
  • 网站建设设计书上海哪里有网站建设
  • 企业网站改版seo苏州园区属于哪个区
  • 电子商务网站建设与管理试卷6帮人做网站要怎么赚钱
  • 番禺网站开发哪家专业专门做前端项目的一些网站
  • 网站怎么做内部链接番禺建设网站外包
  • 自己怎么做网址开网站做海报免费素材网站有哪些
  • 桐乡住房和城乡规划建设局网站定制网站的价格低
  • 国外博客写作网站oa系统主要干什么的
  • 登封网站设计WordPress怎么更改主题名称
  • 太原网站优化怎么做龙江人社app二维码图片