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

做的好看的pc端网站中山哪里网站建设

做的好看的pc端网站,中山哪里网站建设,如何去掉wordpress底部版权,怎么建立一个网站当站长validation-数据校验 前端可以通过day.js、elemetui的表单验证rules等 进行校验。 为什么使用&#xff1a; Validation是一套帮助我们继续对传输的参数进行数据校验的注解&#xff0c;通过配置Validation可以轻松优雅的完成对数据的约束检验。 添加注解 <!-- val…

validation-数据校验

前端可以通过day.js、elemetui的表单验证rules等 进行校验。

为什么使用:
@Validation是一套帮助我们继续对传输的参数进行数据校验的注解,通过配置Validation可以轻松优雅的完成对数据的约束检验。

添加注解

<!--        validation数据校验--><dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>2.0.1.Final</version></dependency><!--springboot 高版本默认以及成validation,添加下面依赖,属性验证--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency>

常用注解

@AssertTrue用于 boolean 字段,该字段只能为 true
@AssertFalse用于 boolean 字段,该字段只能为 false
@DecimalMax用于 Number 字段,只能小于或等于该值
@DecimalMin用于 Number 字段,只能大于或等于该值
@Digits(integer=2,fraction=20)检查是否是数字,校验整数位及小数位
@Future检查该字段的日期是否是属于将来的日期
@Past验证日期是否在当前时间之前,否则无法通过校验
@Length(min=2,max=6)用于字符串,检查字段长度是否在指定范围内
@Max用于 Number 字段,只能小于或等于该值
@Min用于 Number 字段,只能大于或等于该值
@NotNull该字段不能为空
@NotEmpty用于字符串,该字段不能为空字符串
@NotBlank用于字符串,该字段不能为空字符串,忽略空格
@Null该字段必须为空
@Size(min=2,max=4)用于字符串、数组、集合、Map等,检查该字段的size是否在指定范围
@Digits(integer = 2, fraction = 2)验证数字的整数位和小数位的位数是否超过指定的长度
@Pattern(regexp = “[abc]”)用于验证字段是否与给定的正则相匹配
@Range(min=, max=)区间校验
@Email验证是否是邮件地址,如果为null,不进行验证,算通过验证。

使用方法

步骤1:使用校验注解

在Java中提供了一系列的校验方式,它这些校验方式在“javax.validation.constraints”包中,提供了如@Email,@NotNull,@NotBlank等注解。

自定义错误消息,可以覆盖默认的错误提示信息.更改注解的message值

public class BrandEntity implements Serializable {private static final long serialVersionUID = 1L;/*** 品牌id*/@TableIdprivate Long brandId;/*** 品牌名*/@NotBlank(message = "品牌名必须提交")private String name;
}

步骤2:在请求方法种,使用校验注解@Valid,开启校验,

    @RequestMapping("/save")public R save(@Valid @RequestBody BrandEntity brand){brandService.save(brand);return R.ok();}

能够看到"defaultMessage": “不能为空”,这些错误消息定义在“hibernate-validator”的“\org\hibernate\validator\ValidationMessages_zh_CN.properties”文件中。在该文件中定义了很多的错误规则:

在这里插入图片描述

javax.validation.constraints.AssertFalse.message     = 只能为false
javax.validation.constraints.AssertTrue.message      = 只能为true
javax.validation.constraints.DecimalMax.message      = 必须小于或等于{value}
javax.validation.constraints.DecimalMin.message      = 必须大于或等于{value}
javax.validation.constraints.Digits.message          = 数字的值超出了允许范围(只允许在{integer}位整数和{fraction}位小数范围内)
javax.validation.constraints.Email.message           = 不是一个合法的电子邮件地址
javax.validation.constraints.Future.message          = 需要是一个将来的时间
javax.validation.constraints.FutureOrPresent.message = 需要是一个将来或现在的时间
javax.validation.constraints.Max.message             = 最大不能超过{value}
javax.validation.constraints.Min.message             = 最小不能小于{value}
javax.validation.constraints.Negative.message        = 必须是负数
javax.validation.constraints.NegativeOrZero.message  = 必须是负数或零
javax.validation.constraints.NotBlank.message        = 不能为空
javax.validation.constraints.NotEmpty.message        = 不能为空
javax.validation.constraints.NotNull.message         = 不能为null
javax.validation.constraints.Null.message            = 必须为null
javax.validation.constraints.Past.message            = 需要是一个过去的时间
javax.validation.constraints.PastOrPresent.message   = 需要是一个过去或现在的时间
javax.validation.constraints.Pattern.message         = 需要匹配正则表达式"{regexp}"
javax.validation.constraints.Positive.message        = 必须是正数
javax.validation.constraints.PositiveOrZero.message  = 必须是正数或零
javax.validation.constraints.Size.message            = 个数必须在{min}和{max}之间org.hibernate.validator.constraints.CreditCardNumber.message        = 不合法的信用卡号码
org.hibernate.validator.constraints.Currency.message                = 不合法的货币 (必须是{value}其中之一)
org.hibernate.validator.constraints.EAN.message                     = 不合法的{type}条形码
org.hibernate.validator.constraints.Email.message                   = 不是一个合法的电子邮件地址
org.hibernate.validator.constraints.Length.message                  = 长度需要在{min}和{max}之间
org.hibernate.validator.constraints.CodePointLength.message         = 长度需要在{min}和{max}之间
org.hibernate.validator.constraints.LuhnCheck.message               = ${validatedValue}的校验码不合法, Luhn模10校验和不匹配
org.hibernate.validator.constraints.Mod10Check.message              = ${validatedValue}的校验码不合法, 模10校验和不匹配
org.hibernate.validator.constraints.Mod11Check.message              = ${validatedValue}的校验码不合法, 模11校验和不匹配
org.hibernate.validator.constraints.ModCheck.message                = ${validatedValue}的校验码不合法, ${modType}校验和不匹配
org.hibernate.validator.constraints.NotBlank.message                = 不能为空
org.hibernate.validator.constraints.NotEmpty.message                = 不能为空
org.hibernate.validator.constraints.ParametersScriptAssert.message  = 执行脚本表达式"{script}"没有返回期望结果
org.hibernate.validator.constraints.Range.message                   = 需要在{min}和{max}之间
org.hibernate.validator.constraints.SafeHtml.message                = 可能有不安全的HTML内容
org.hibernate.validator.constraints.ScriptAssert.message            = 执行脚本表达式"{script}"没有返回期望结果
org.hibernate.validator.constraints.URL.message                     = 需要是一个合法的URLorg.hibernate.validator.constraints.time.DurationMax.message        = 必须小于${inclusive == true ? '或等于' : ''}${days == 0 ? '' : days += '天'}${hours == 0 ? '' : hours += '小时'}${minutes == 0 ? '' : minutes += '分钟'}${seconds == 0 ? '' : seconds += '秒'}${millis == 0 ? '' : millis += '毫秒'}${nanos == 0 ? '' : nanos += '纳秒'}
org.hibernate.validator.constraints.time.DurationMin.message        = 必须大于${inclusive == true ? '或等于' : ''}${days == 0 ? '' : days += '天'}${hours == 0 ? '' : hours += '小时'}${minutes == 0 ? '' : minutes += '分钟'}${seconds == 0 ? '' : seconds += '秒'}${millis == 0 ? '' : millis += '毫秒'}${nanos == 0 ? '' : nanos += '纳秒'}

步骤3:给校验的Bean后,紧跟一个BindResult,就可以获取到校验的结果。拿到校验的结果,就可以自定义的封装。

 @RequestMapping("/save")public R save(@Valid @RequestBody BrandEntity brand, BindingResult result){if( result.hasErrors()){Map<String,String> map=new HashMap<>();//1.获取错误的校验结果result.getFieldErrors().forEach((item)->{//获取发生错误时的messageString message = item.getDefaultMessage();//获取发生错误的字段String field = item.getField();map.put(field,message);});return R.error(400,"提交的数据不合法").put("data",map);}brandService.save(brand);return R.ok();}

在这里插入图片描述

这种是针对于该请求设置了一个内容校验,如果针对于每个请求都单独进行配置,显然不是太合适,实际上可以统一的对于异常进行处理。

步骤4:统一异常处理

可以使用SpringMvc所提供的@ControllerAdvice,通过“basePackages”能够说明处理哪些路径下的异常。

(1)抽取一个异常处理类

package com.df.gulimall.product.exception;import com.df.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
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.RestControllerAdvice;import java.util.HashMap;
import java.util.Map;/*** 集中处理所有异常*/
@Slf4j
@RestControllerAdvice(basePackages = "com.df.gulimall.product.controller")
public class GulimallExceptionAdvice {//数据校验异常   s@ExceptionHandler(value = Exception.class)public R handleValidException(MethodArgumentNotValidException exception) {Map<String, String> map = new HashMap<>();BindingResult bindingResult = exception.getBindingResult();bindingResult.getFieldErrors().forEach(fieldError -> {String message = fieldError.getDefaultMessage();String field = fieldError.getField();map.put(field, message);});log.error("数据校验出现问题{},异常类型{}", exception.getMessage(), exception.getClass());return R.error(BizCodeEnume.VALID_EXCEPTION.getCode(), BizCodeEnume.VALID_EXCEPTION.getMsg()).put("data", map);}//其他异常处理@ExceptionHandler(value = Throwable.class)public R handleException(Throwable throwable) {return R.error(BizCodeEnume.UNKNOW_EXEPTION.getCode(), BizCodeEnume.UNKNOW_EXEPTION.getMsg());}
}

(2)测试: http://localhost:88/api/product/brand/save

在这里插入图片描述

(3)默认异常处理

   @ExceptionHandler(value = Throwable.class)public R handleException(Throwable throwable){log.error("未知异常{},异常类型{}",throwable.getMessage(),throwable.getClass());return R.error(BizCodeEnum.UNKNOW_EXEPTION.getCode(),BizCodeEnum.UNKNOW_EXEPTION.getMsg());}

(4)错误状态码

上面代码中,针对于错误状态码,是我们进行随意定义的,然而正规开发过程中,错误状态码有着严格的定义规则,如该在项目中我们的错误状态码定义

在这里插入图片描述

为了定义这些错误状态码,我们可以单独定义一个常量类,用来存储这些错误状态码

package com.bigdata.common.exception;/**** 错误码和错误信息定义类* 1. 错误码定义规则为5为数字* 2. 前两位表示业务场景,最后三位表示错误码。例如:100001。10:通用 001:系统未知异常* 3. 维护错误码后需要维护错误描述,将他们定义为枚举形式* 错误码列表:*  10: 通用*      001:参数格式校验*  11: 商品*  12: 订单*  13: 购物车*  14: 物流*/
public enum BizCodeEnum {UNKNOW_EXEPTION(10000,"系统未知异常"),VALID_EXCEPTION( 10001,"参数格式校验失败");private int code;private String msg;BizCodeEnum(int code, String msg) {this.code = code;this.msg = msg;}public int getCode() {return code;}public String getMsg() {return msg;}
}

(5)测试: http://localhost:88/api/product/brand/save
在这里插入图片描述

http://www.yayakq.cn/news/678229/

相关文章:

  • 自己电脑上做网站深圳海洋网络做网站
  • 网站建设创业计划书范文大全千万别学交互设计
  • 如何用虚拟主机建设网站企业cms免费模板
  • 佛山专业网站建设哪家好中国城乡建设部官网
  • 山东住房建设厅官网站首页品质好物推荐怎么上
  • 网站后台地址忘记了重庆市有几个区
  • 建设网站的公司wordpress不兼容ie
  • 青岛李沧网站建设传奇网站传奇
  • 哪个网站做废旧好福建建设资格执业注册管理中心网站
  • 批量建站怎么赚钱适合美工的网站
  • 精品课程网站设计创办公司需要多少资金
  • 网页设计师都在什么网站上面找素材在线crm网站
  • 网站开发建设流程网站开发人才培养目标
  • 网站制作公司 云南瑞安网
  • 书店网站模板东阿做网站推广
  • 分子信标探针在线设计网站怎样申请一个免费网站
  • wordpress多站点模式江阴服装外贸现状
  • 重庆网站建设 重庆网站制作2018一级a做爰片免费网站
  • 电商网站开发视频模板免费制作
  • 温州外贸网站设计宣传册设计与制作软件
  • 免费建网站那个好怎么用自助网站
  • jsp网站建设项目实战网站降权分析
  • 曲周企业做网站推广wordpress英文企业主题下载
  • 中卫网站网站建设wordpress 主题 下载
  • 信息发布网站开发中企动力是干什么的
  • 青岛网站建设青岛博采网络建设部网站网站建设
  • 网站开发商城实例平面设计接单网站有哪些
  • 免费织梦网站模板电子商务的网站案例
  • 网页设计作品到哪个网站秦皇岛吧 百度贴吧
  • 石家庄网站网站建设南京前十名传媒广告公司