客户端验证:Validation

validation与 springboot 结合

  1. bean 中添加标签
    部分代码:
    标签需要加在属性上,@NotBlank 标签含义文章末尾有解释
    在这里插入图片描述

  2. Controller中开启验证
    在Controller 中 请求参数上添加@Validated 标签开启验证
    在这里插入图片描述

  3. resource 下新建错误信息配置文件
    在resource 目录下新建提示信息配置文件“ValidationMessages.properties“

注意:名字必须为“ValidationMessages.properties“ 因为SpringBoot自动读取classpath中的ValidationMessages.properties里的错误信息

ValidationMessages.properties 文件的编码为ASCII。数据类型为 key value 。key“user.name.notBlank“为第一步 bean的标签 大括号里面对应message的值

value 为提示信息 ,但是是ASCII 。(内容为“名字不能为空“)

在这里插入图片描述

  1. 自定义异常处理器,捕获错误信息
    当验证不通过时会抛异常出来,异常的message 就是 ValidationMessages.properties 中配置的提示信息。此处定义异常处理器。捕获异常信息(因为验证不通过的项可能是多个所以统一捕获处理),并抛给前端。(此处是前后端分离开发)
public void MethodArgumentNotValidException(Exception ex, HttpServletRequest request, HttpServletResponse response) {
    logger.error( ":" + CommonUtil.getHttpClientInfo(request), ex);
    MethodArgumentNotValidException c = (MethodArgumentNotValidException) ex;
    List<ObjectError> errors =c.getBindingResult().getAllErrors();
    StringBuffer errorMsg=new StringBuffer();
    errors.stream().forEach(x -> errorMsg.append(x.getDefaultMessage()).append(";"));
    pouplateExceptionResponse(response, HttpStatus.INTERNAL_SERVER_ERROR, errorMsg.toString());
}
private void pouplateExceptionResponse(HttpServletResponse response, HttpStatus errorCode, String errorMessage) {
    try {
        response.sendError(errorCode.value(), errorMessage);
    } catch (IOException e) {
        logger.error("failed to populate response error", e);
    }
    }
  1. 附上部分标签含义
    Bean Validation 中内置的 constraint
    在这里插入图片描述

hibernate补充的注解中,最后3个不常用,可忽略。
主要区分下@NotNull @NotEmpty @NotBlank 3个注解的区别:

@NotNull 任何对象的value不能为null

@NotEmpty 集合对象的元素不为0,即集合不为空,也可以用于字符串不为null

@NotBlank 只能用于字符串不为null,并且字符串trim()以后length要大于0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSValidation客户端表单验证框架,用在BS系统中,或者简单的网页系统中。表单验证在这些开发中很常见:新用户注册,需要校验某些字段;用户登陆,需要校验;等等。在这之前,页面开发者(JavaScript开发者)需要编写大量的JavaScript来与表单对象交互,并进行校验。常见的校验如不能为空,必须满足长度要求,必须为数字,必须为Email等等。根据一般的经验,如果表单中需要校验的域个数超过10个,开发过程就显得枯燥无味——多段重复的代码不断重复,如果要求跨浏览器,更多的考虑因素使人头疼不已。往往这个页面的验证还不能用于那个验证……虽然逻辑基本相同;但是在大多数情况下,出于种种原因,开发者宁愿(或者没办法)重新编写另一个页面的JavaScript代码。 在系统复杂,表单复杂的场景下,JSValidation的优势更加突出。JSValidation目前能够完成客户端的13种验证如下: ? 取值非空 ? 必须为整数 ? 必须为双精度数 ? 必须为普通英文字符(字母,数字,下划线) ? 必须为中文字符 ? 最小长度 ? 最大长度 ? 是否为Email格式 ? 是否为日期格式(yyyy-mm-dd) ? 自定义的正则表达式 ? 整数范围(大于某数小于某数) ? 双精度数范围 ? 必须与某个域的值相同 使用步骤: 以我所做的测试为例,说明在实际应用中如何使用JSValidation
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值