SpringBoot 表单验证@Valid

       最近在做项目的时候,需要对调用方传递过来的JSON格式数据项做验证,用来防范小白搞乱网站和一些低级的黑客技术。SpringBoot提供了强大的表单验证功能实现。即校验用户提交的数据的合理性的,比如是否为空了,年龄必须是不小于18 ,是否是纯数字等等。为了项目的优化,可以为每个调用方表单创建下面是我的

import org.hibernate.validator.constraints.NotEmpty;

public class OrderForm {

    /**
     * 买家姓名
     */
    @NotEmpty(message = "姓名必填")
    private String name;

    /**
     * 买家手机号
     */
    @NotEmpty(message = "手机号必填")
    private String phone;

    /**
     * 买家地址
     */
    @NotEmpty(message = "地址必填")
    private String address;

    /**
     * 买家微信openid
     */
    @NotEmpty(message = "openid必填")
    private String openid;

    /**
     * 购物车
     */
    @NotEmpty(message = "购物车")
    private String items;
}

验证限制 说明 

@Null    限制只能为null 
@NotNull   限制必须不为null 
@AssertFalse  限制必须为false 
@AssertTrue   限制必须为true 
@DecimalMax(value)   限制必须为一个不大于指定值的数字 
@DecimalMin(value)    限制必须为一个不小于指定值的数字 
@Digits(integer,fraction)   限制必须为一个小数,且整数部分的位数不能超过integer,小数部分的位数不能超过fraction 
@Future    限制必须是一个将来的日期 
@Max(value)   限制必须为一个不大于指定值的数字 
@Min(value)   限制必须为一个不小于指定值的数字 
@Pattern(value)   限制必须符合指定的正则表达式 
@Size(max,min)   限制字符长度必须在min到max之间 
@Past    验证注解的元素值(日期类型)比当前时间早 
@NotEmpty  验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0) 
@NotBlank   验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 
@Email   验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式 

        在后端控制层controller里面,可以使用注解 @Valid 进行表单验证,同时,BindingResult类的对象用来获得表单验证的结果。

public Map<String, String> create(@Valid OrderForm orderForm, BindingResult bindingResult) {

        if(bindingResult.hasErrors()) {
            log.error("【创建订单】参数不正确, orderForm={}", orderForm);
            throw new Exception(bindingResult.getFieldError().getDefaultMessage());
        }

        map.put("status", "success");

        return map;
    }

猜你喜欢

转载自blog.csdn.net/m0_37732829/article/details/85264553