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

丝绸之路网站建设意义巨野做网站的

丝绸之路网站建设意义,巨野做网站的,久久素食网,合作客户北京网站建设提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 1 简述1.1 Validated作用1.2 所有参数注解含义1.3 异常处理1.4 Valid和Validated比较Valid级联校验 2.Validated 分组校验1.1为何要分组校验#xff1f;1.2 代码案… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 1 简述1.1 Validated作用1.2 所有参数注解含义1.3 异常处理1.4 Valid和Validated比较Valid级联校验 2.Validated 分组校验1.1为何要分组校验1.2 代码案例1.3 Validated分组校验顺序分组校验顺序通过使用 GroupSequence注解实现 3.Validated的使用方法3.1 在方法级别上使用Validated3.2 在类级别上使用Validated3.2 Get请求参数校验 1 简述 Validated是Spring框架中的一个注解它是JSR-303规范的扩展可以用于在方法级别上校验方法参数。它可以用于验证请求参数和请求体中的数据。Validated注解可以用于方法级别和类级别上用于验证方法参数和类属性。 1.1 Validated作用 Validation是一套帮助我们继续对传输的参数进行数据校验的注解通过配置Validation可以很轻松的完成对数据的约束。 Validated作用在类、方法和参数上 1.2 所有参数注解含义 1.3 异常处理 错误的状态码返回的响应码推荐使用400 bad request. 说明若不做异常处理Validated注解的默认异常消息如下示例 2020-09-05 21:48:38.106 WARN 9796 --- [nio-8080-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public java.lang.String com.example.validateddemo.controller.DemoController.validatedDemo1(com.example.validateddemo.entity.dto.UseDto):[Field error in object useDto on field username: rejected value [null]; codes [NotBlank.useDto.username,NotBlank.username,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [useDto.username,username]; arguments []; default message [username]]; default message [用户名不能为空]] ]package com.example.validateddemo.handler;import com.example.validateddemo.base.Result; import com.example.validateddemo.enums.ResultEnum; import com.example.validateddemo.utils.ResultUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.validation.ObjectError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import java.util.List;Slf4j ControllerAdvice public class ValidatedExceptionHandler {/*** 处理Validated参数校验失败异常* param exception 异常类* return 响应*/ResponseBodyResponseStatus(HttpStatus.BAD_REQUEST)ExceptionHandler(MethodArgumentNotValidException.class)public Result exceptionHandler(MethodArgumentNotValidException exception){BindingResult result exception.getBindingResult();StringBuilder stringBuilder new StringBuilder();if (result.hasErrors()) {ListObjectError errors result.getAllErrors();if (errors ! null) {errors.forEach(p - {FieldError fieldError (FieldError) p;log.warn(Bad Request Parameters: dto entity [{}],field [{}],message [{}],fieldError.getObjectName(), fieldError.getField(), fieldError.getDefaultMessage());stringBuilder.append(fieldError.getDefaultMessage());});}}return ResultUtil.validatedException(stringBuilder.toString());} }1.4 Valid和Validated比较 Spring Boot–09–注解Valid Valid支持级联校验而Validated不行Validated支持分组校验而Valid不行 Valid级联校验 级联校验: 也叫嵌套检测.嵌套就是一个实体类包含另一个实体类 Valid和可以用在成员属性的字段上,因此 Valid可以提供级联校验 Data public class Hair {NotBlank(message 头发长度必须提交)private Double length;NotBlank(message 头发颜色必须提交)private String color; }Data public class Person {NotBlank(message 用户姓名必须提交)Size(min2, max8)private String userName;// 添加Valid注解实现嵌套检测ValidNotEmpty(message 用户要有头发)private ListHair hairs; }PostMapping(/person) public Result addPerson(Valid RequestBody Person person) {return Result.buildSuccess(person); } 只是在方法参数前面添加 Valid和 Validated注解,不会对嵌套的实体类进行校验.要想实现对嵌套的实体类进行校验,需要在嵌套的实体类属性上添加 Valid注解 2.Validated 分组校验 1.1为何要分组校验 假设有这样一种场景 我们使用同一个VORequest类来传递save和update方法的数据 但对于save方法来说通常有框架帮我们生成id我们不需要传id此时需要使用注解Null表名id数据必须为空。但对于update方法我们必须传id才能进行update操作所以同一个字段面对不同的场景不同需求就可以使用分组校验。 1.2 代码案例 1创建分组接口 这里并不需要实现编写什么代码标明分类。 //分组接口 1 public interface InsertGroup { }//分组接口 2 public class UpdateGroup { } 2Request实体类 Data NoArgsConstructor public class TestRequest {Null(message 无需传id,groups InsertGroup.class)NotBlank(message 必须传入id,groups UpdateGroup.class)private String id;} 3controller接口 RequestMapping(/valid/test)public ResponseEntityResponseResult test(Validated({UpdateGroup.class})RequestBody TestRequest request) {System.out.println(request);return null;} 4postman测试 5注意事项 当我们在controller层指定分组后属性上没有表名分组的校验还执行么 下面的Request实体中id进行了分组address没有进行分组 Data NoArgsConstructor public class TestRequest {Null(message 无需传id,groups InsertGroup.class)NotBlank(message 必须传入id,groups UpdateGroup.class)private String id;Length(max 3, message address最大长度是3)private String address;} postman测试 如下图校验没有成功说明一旦开启了分组校验就必须把所有的校验规则都指定组别不然不生效。 1.3 Validated分组校验顺序 默认情况下,分组间的约束是无序的,但是在一些特殊的情况下可能对分组间的校验有一定的顺序 比如第二组的分组的约束的校验需要依赖第一组的稳定状态来进行,此时,要求分组间的约束校验一定要有顺序 分组校验顺序通过使用 GroupSequence注解实现 Data public class UserGroupSequence {public interface FirstGroup {}public interface SecondGroup {}// 使用GroupSequence定义分组校验顺序按照FirstGroupSecondGroup分组顺序进行校验GroupSequence({FirstGroup.class, SecondGroup.class})public interface Group {}NotEmpty(message 用户ID必须提交, group FirstGroup.class)private String userId;NotEmpty(message 用户姓名必须提交, group FirstGroup.class)Size(min 2, max 8, message 用户姓名的长度在2~8之间, goup Second.class)private String userName; } Controller RestController RequestMapping(/user) public class UserGroupSequenceController {// 这里方法中Validated注解value的值是Group.classPostMapping(/user)public Result addGroup(Validated(value Group.class) RequestBody UserGroupSequence user) {return Result.buildSuccess(user);} } 使用 GroupSequence注解指定分组校验顺序后,第一组分组的约束的校验没有通过后,就不会进行第二组分组的约束的校验 3.Validated的使用方法 3.1 在方法级别上使用Validated 在方法级别上使用Validated注解需要在方法参数上添加该注解。下面是一个简单的示例演示了如何在方法级别上使用Validated注解。 RestController RequestMapping(/users) public class UserController {PostMappingpublic User createUser(RequestBody Validated User user) {// 处理用户创建逻辑}}在上面的示例代码中Validated注解被应用在User对象上用于验证请求体中的数据是否符合要求。 3.2 在类级别上使用Validated 在类级别上使用Validated注解需要在类上添加该注解。下面是一个简单的示例演示了如何在类级别上使用Validated注解。 RestController RequestMapping(/users) Validated public class UserController {PostMappingpublic User createUser(RequestBody User user) {// 处理用户创建逻辑}}在上面的示例代码中Validated注解被应用在UserController类上用于验证该类中所有方法的参数是否符合要求。 3.2 Get请求参数校验 get参数校验需要在类上加Validated RestController Slf4j RequestMapping(/api/test) Validated public class TestController {GetMapping(value /h11)public String test11( NotEmpty(message 姓名不能为空) String name) {System.out.println(kaidsd);System.out.println(name);return applyInfoDTO;} }
http://www.zqtcl.cn/news/756865/

相关文章:

  • 泰安北京网站建设商业网站的后缀一般为
  • 必须网站的访问量wordpress标题大小
  • qq怎么做放资源的网站英语seo什么意思
  • 学生心理健康网站建设论文php开源内容管理系统
  • 机关网站内容建设雄安专业网站建设
  • 有域名有空间怎么做网站怎么制作网站封面
  • 注册域名哪个网站好信息技术制作网站首页
  • 企业网站app制作价格国外外链平台
  • 泉州市网站设计企业网络有限公司经营范围
  • 电子商务网站创业计划书后台管理系统登录
  • 蚂蚁建站网页传奇游戏单职业
  • 标准通网站建设广州 flash 网站
  • 怎么做游戏自动充值的网站淘宝购物平台
  • 免费帮助建站营销策略怎么写
  • 12380 举报网站建设优秀个人网站
  • 简洁网站模板素材用wordpress上传源砖
  • 高密做网站电影html网页模板设计素材
  • 湖北网络营销网站襄阳网站建设-飞鱼网络
  • 想更新公司网站怎么做关于网站开发的自我评价
  • 找建筑工作哪个网站好新增网站 备案
  • 格力网站的建设情况wordpress mysql 密码重置
  • 网站access数据怎么做高端品牌网站建设的目的
  • 外贸买家网站凯里网站建设流程
  • 网站一年要多少钱国外的建筑设计网站
  • 手游发号网站模板ic外贸网站建设
  • 珠海网站制作案例tp5 商城网站开发
  • 母婴用品网站建设规划上海市建设工程 安全协会网站
  • 做室内设计特别好的网站网站服务器租用恒创
  • 慕课网站开发文档wordpress上传到空间
  • 行业垂直网站开发漳州最便宜的网站建设价格