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

西宁网站公司建立平台网站需要花多少钱

西宁网站公司,建立平台网站需要花多少钱,访问网站速度跟域名还是服务器有关,网站的购物车怎么做分组校验(Group Validation)允许在不同的场景下对同一个实体类应用不同的校验规则。例如,在新增数据和更新数据时,可能需要对某些字段的校验规则进行调整。以下是分组校验的具体实现步骤: 一、定义分组接口 创建空的标…

分组校验(Group Validation)允许在不同的场景下对同一个实体类应用不同的校验规则。例如,在新增数据更新数据时,可能需要对某些字段的校验规则进行调整。以下是分组校验的具体实现步骤:


一、定义分组接口

创建空的标记接口(仅用于分组标识):

// 新增时的校验分组
public interface CreateGroup {}// 更新时的校验分组
public interface UpdateGroup {}

二、在实体类中指定分组

在字段的校验注解中,通过 groups 属性指定所属分组:

public class User {@NotBlank(message = "用户ID不能为空", groups = UpdateGroup.class)private String id;@NotBlank(message = "用户名不能为空", groups = CreateGroup.class)private String username;@Size(min = 6, max = 20, message = "密码长度需在6到20位之间", groups = {CreateGroup.class, UpdateGroup.class})private String password;// 省略Getter和Setter
}
  • id 字段:仅在 UpdateGroup 分组下校验(更新时必须校验)。
  • username 字段:仅在 CreateGroup 分组下校验(新增时必须校验)。
  • password 字段:在 CreateGroupUpdateGroup 分组下均校验(新增和更新时都校验)。

三、在Controller中指定校验分组

在Controller方法参数上使用 @Validated 注解(注意是 Spring 的注解,而非 @Valid),并指定分组:

@RestController
public class UserController {// 新增用户(校验 CreateGroup 分组)@PostMapping("/users")public String createUser(@Validated(CreateGroup.class) @RequestBody User user) {return "用户新增成功";}// 更新用户(校验 UpdateGroup 分组)@PutMapping("/users/{id}")public String updateUser(@Validated(UpdateGroup.class) @RequestBody User user) {return "用户更新成功";}
}

四、全局异常处理

分组校验失败会抛出 ConstraintViolationException,需在全局异常处理器中捕获:

@RestControllerAdvice
public class GlobalExceptionHandler {@ResponseStatus(HttpStatus.BAD_REQUEST)@ExceptionHandler(ConstraintViolationException.class)public Map<String, Object> handleConstraintViolationException(ConstraintViolationException ex) {Map<String, String> errors = new HashMap<>();ex.getConstraintViolations().forEach(violation -> {String field = violation.getPropertyPath().toString();String message = violation.getMessage();errors.put(field, message);});return Map.of("code", HttpStatus.BAD_REQUEST.value(),"message", "参数校验失败","data", errors);}
}

五、测试示例

1. 新增用户(触发 CreateGroup 分组校验)

请求:

POST /users
Content-Type: application/json{"password": "12345"
}

响应:

{"code": 400,"message": "参数校验失败","data": {"username": "用户名不能为空","password": "密码长度需在6到20位之间"}
}
2. 更新用户(触发 UpdateGroup 分组校验)

请求:

PUT /users/123
Content-Type: application/json{"password": "12345"
}

响应:

{"code": 400,"message": "参数校验失败","data": {"id": "用户ID不能为空","password": "密码长度需在6到20位之间"}
}

六、分组校验的高级用法

1. 多分组组合校验

可以在 @Validated 中同时指定多个分组:

@Validated({CreateGroup.class, AnotherGroup.class})
2. 默认分组

如果字段未指定 groups 属性,则默认属于 Default 分组。可以通过 @Validatedvalue 属性同时包含默认分组:

@Validated(value = {UpdateGroup.class, Default.class})
3. 继承分组

分组接口可以继承其他接口,形成层级关系:

public interface AdvancedGroup extends CreateGroup {}

七、分组校验 vs 多个DTO

方案优点缺点
分组校验避免创建多个相似DTO,减少冗余代码实体类可能包含不同场景的注解
多个DTO职责单一,结构清晰需要维护多个DTO类

总结

通过分组校验,可以灵活控制不同场景下的校验规则,避免为每个场景创建单独的DTO类。关键步骤:

  1. 定义分组接口。
  2. 在实体类字段的校验注解中指定 groups
  3. 在Controller方法参数上使用 @Validated(分组.class)
  4. 全局捕获 ConstraintViolationException 并返回自定义错误。

文章转载自:

http://8MBMYzXK.rqwmt.cn
http://DRoxuCRJ.rqwmt.cn
http://Re2si4mz.rqwmt.cn
http://7frGTIV5.rqwmt.cn
http://iIDIMB3I.rqwmt.cn
http://ssGvIhRJ.rqwmt.cn
http://BPr0OTc6.rqwmt.cn
http://stesMITB.rqwmt.cn
http://aOyFTSWZ.rqwmt.cn
http://W2713q53.rqwmt.cn
http://AJDhrela.rqwmt.cn
http://gV3VPqXu.rqwmt.cn
http://cuk6uz61.rqwmt.cn
http://w5y9TWKT.rqwmt.cn
http://AZjNI7Tq.rqwmt.cn
http://950XNFtF.rqwmt.cn
http://aJxxTrFy.rqwmt.cn
http://vzwZJtG5.rqwmt.cn
http://gwRCvtGS.rqwmt.cn
http://K6qvWGIq.rqwmt.cn
http://BUufKEcB.rqwmt.cn
http://qeq1LU2a.rqwmt.cn
http://ABEKsS7G.rqwmt.cn
http://c4IjiJjr.rqwmt.cn
http://P8G75QeX.rqwmt.cn
http://36arIpC1.rqwmt.cn
http://Qjni4uGM.rqwmt.cn
http://aOpIIrUj.rqwmt.cn
http://jcPsVVrI.rqwmt.cn
http://8P8Ns1wi.rqwmt.cn
http://www.dtcms.com/wzjs/706729.html

相关文章:

  • 做网站一定要有空间吗wordpress与微信小程序
  • 智能网站建设哪家好263企业邮箱修改密码
  • 深圳网站建设联系电话珠海市网站建设品牌
  • 网站建设费包括什么做电商有哪些网站有哪些内容
  • 建设银行网站不主动弹出如wordpress
  • 知名室内设计网站做网站建设注册商标是多少类
  • 西安营销网站建设公司陇西学做网站
  • 网站建设用户核心官网浏览器
  • 怎么做电影引流网站虚拟机wordpress建站
  • 三合一网站怎么做做网站怎么样
  • 丹阳网站网站建设公司华网天下公司
  • 做网站的软件淘汰史自己做的相册网站
  • 网站的运作方式嘉定网站设计制作优化排名
  • 网站建设7个基永久网站建设
  • 上蔡网站建设公司全屋定制设计软件哪个好
  • 网站服务器如何选择公司网站建设推荐q479185700顶上
  • 旅游公司的网站怎么做什么网站可以做图片
  • 给别人做网站用做假酒验证青岛建设工程信息网官网
  • 哪些网站可以免费做h5工程公司组织架构图
  • wordpress企业网站入门wordpress数学插件
  • 威海建设网站企业网站源码搭建
  • 企业建网站能不能一次进费用毕设做桌面软件 网站
  • 网站商城前台模板免费下载北京市在建工程项目查询
  • 个人建站除了wordpress安卓手机app
  • 达州网站建设yufanse滴滴网站建设流程
  • 网站建设专员工作游戏排行榜前十名大型网络游戏
  • 外卖网站建设方案书百度海外广告运营
  • 手机网站制作注意事项贪玩战online
  • 厦门建设局网站中标结果查询史先生 网站建设
  • 泉州专业做网站开发专业网站建设报价