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

南阳建设重要区域中心城市网站一网科技有限公司

南阳建设重要区域中心城市网站,一网科技有限公司,北京高端购物商场,南充城市建设投诉网站校验的需求 前端请求后端接口传输参数,需要校验参数。 在controller中需要校验参数的合法性,包括:必填项校验、数据格式校验等在service中需要校验业务规则,比如:课程已经审核过了,所以提交失败。 servi…

校验的需求

前端请求后端接口传输参数,需要校验参数。

  1. 在controller中需要校验参数的合法性,包括:必填项校验、数据格式校验等
  2. 在service中需要校验业务规则,比如:课程已经审核过了,所以提交失败。

service中的业务规则不方便写成通用的代码,但是controller中的可以。

JSR-303定义了参数校验的规范,对bean属性进行校验。spring boot提供了JSR-303支持,即spring-boot-starter-validation

导入相关依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

javax.validation.constraints包下有很多这样的校验注解,直接使用注解定义校验规则即可
在这里插入图片描述
在这里插入图片描述

实现

定义校验规则

@Data
public class AddCourseDto {@NotEmpty(message = "课程名称不能为空")@ApiModelProperty(value = "课程名称", required = true)private String name;@NotEmpty(message = "适用人群不能为空")@Size(message = "适用人群内容过少",min = 10)@ApiModelProperty(value = "适用人群", required = true)private String users;@ApiModelProperty(value = "课程标签")private String tags;@NotEmpty(message = "课程分类不能为空")@ApiModelProperty(value = "大分类", required = true)private String mt;......

开启校验

在controller方法中添加@Validated注解,开启校验

    @PostMapping("/course")public CourseBaseInfoDto createCourseBase(@RequestBody @Validated AddCourseDto addCourseDto) {Long companyId = 114514L;return courseBaseInfoService.createCourseBase(companyId, addCourseDto);}

如果校验出错Spring会抛出MethodArgumentNotValidException异常,我们需要在统一异常处理器中捕获异常,解析出异常信息。

    @ExceptionHandler(MethodArgumentNotValidException.class)@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) public RestErrorResponse exception(MethodArgumentNotValidException e) {BindingResult result = e.getBindingResult();List<String> msgList = new ArrayList<>();result.getFieldErrors().stream().forEach(item -> msgList.add(item.getDefaultMessage()));String msg = StringUtils.join(msgList, ",");log.error("【系统异常】{}", msg);return new RestErrorResponse(msg);}

测试

把必选项设置为空,发送请求。

略…

分组校验

有时在同一个属性上设置一个校验规则不能满足要求。

比如:订单编号在添加时要求为空,在修改时要求不为空。此时就需要用到分组校验,同一个属性定义多个校验规则属于不同的分组。

比如@NULL规则属于insert分组,@NotEmpty规则属于update分组。

实现

定义分组

用class类表示不同的分组,定义不同的接口类型表示不同的分组。

public class ValidationGroups {public interface Insert{};public interface Update{};public interface Delete{};
}

在定义校验规则时指定分组

      @NotEmpty(groups = {ValidationGroups.Insert.class}, message = "添加课程名称不能为空")@NotEmpty(groups = {ValidationGroups.Update.class}, message = "修改课程名称不能为空")@ApiModelProperty(value = "课程名称", required = true)private String name;

在Controller方法中启动校验规则指定要使用的分组名

    @PostMapping("/course")public CourseBaseInfoDto createCourseBase(@RequestBody @Validated({ValidationGroups.Insert.class}) AddCourseDto addCourseDto) {Long companyId = 114514L;return courseBaseInfoService.createCourseBase(companyId, addCourseDto);}

校验规则不满足使用条件

  1. 手写校验代码
  2. 自定义校验规则注解(查阅相关资料)
http://www.yayakq.cn/news/781153/

相关文章:

  • 巴中网站制作公司阿里云 wordpress 插件
  • 南宁网站设计公司排名动漫设计与制作学费
  • 小学生做网站网站安全证书过期怎么处理
  • 用网站做平台有哪些qq群推广网站
  • 做企业网站的尺寸是多少钱信息技术八年级上册网站建设
  • 通过php获取手机网站访客的手机号码张店网站推广
  • 网站群项目建设实施进度计划做网站怎么那么难
  • 南宁广告公司网站建设广州网站建设哪家公司
  • 清江浦区住房和城乡建设局网站展台设计展会展位设计
  • 杭州做美妆的网站企业网站如何建设报告
  • 辅助购卡网站怎么做出于安全保障需要
  • 昆山网站建设公司苏州爬虫科技百度搜索排名怎么做
  • 企业网站建设方案详细方案建设局怎么进
  • 论坛网站模板ui培训中心
  • 还有哪些网站可以做淘宝活动千万不能 网站
  • php搭建网站教程网站升级改造建设方案
  • 关于旅游网站开发的研究方法多少钱 英文
  • 阆中网站网站建设网站开发要服务器吗
  • 公司建网站制作平台睢阳区网
  • .net 手机网站开发企业展厅数字多媒体
  • 人跟狗做网站济南公司建设网站
  • 官方网站建立厦门今天刚刚发生的新闻
  • 江苏中南建设集团网站是多少前端和后端哪个常熬夜
  • 淘客如何做网站推广工业设计展板
  • uehtml 网站源码网站开发界面图标设计
  • 江苏和住房建设厅网站做外贸网站特色
  • 深圳网站营销推广公司电话网络营销方式有哪些?举例说明
  • 手机网站建设价格网站建设默认字体
  • 网站建设实训报告建议如何对一个网站进行seo
  • 麦壳云网站建设个人社保网上服务平台