16-基于springboot的validation请求验证

1 添加依赖库,修改pom.xml


      
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.boot
            spring-boot-starter-validation
        

2 创建验证信息自定义类

import com.vanpeng.common.entity.Result;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import java.util.HashMap;
import java.util.Map;
public class ReqValidationUtil {
    static public Result getValidateError(BindingResult bindingResult) {
        if(bindingResult.hasErrors() == false)
            return null;
        Map fieldErrors = new HashMap();

        for(FieldError error : bindingResult.getFieldErrors()){
            fieldErrors.put(error.getField(), error.getDefaultMessage());
        }
        Result result = new Result(422, "输入错误"); //rfc4918 - 11.2. 422: Unprocessable Entity
        result.setData(fieldErrors);
        return result;
    }
}

3 创建实体类,添加validation注解

import com.baomidou.mybatisplus.annotation.TableName;
import com.commons.mybatis.result.POBase;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
@Data
@TableName("earlywarning.outcomereview_upload_results_package")
public class OutcomereviewUploadResultsPackageEntity extends POBase implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 成果名称
     */
    @NotNull(message = "成果名称不能为空")
    private String achieveName;
    /**
     * 项目名称
     */
    @NotNull(message = "项目名称不能为空")
    @ApiModelProperty("项目名称")
    private String projectName;
    /**
     * 规划类型 总体规划,专项规划
     */
    @NotNull(message = "规划类型不能为空")
    @ApiModelProperty("规划类型")
    private String typePlan;
    /**
     * 行政区代码
     */
    @NotNull(message = "行政区代码不能为空")
    @Pattern(regexp = "^[1-8][0-7]\\d{4,}$",message = "行政区代码格式不正确")
    @ApiModelProperty("行政区代码")
    private String administrativeCode;
    /**
     * 行政区域名称
     */
    @NotNull(message = "行政区名称不能为空")
    @ApiModelProperty("行政区名称")
    private String administrativeName;
    /**
     * 规划层级
     */
    @NotNull(message = "规划层级不能为空")
    @ApiModelProperty("规划层级")
    private String planningLevel;
    /**
     * 成果版本,报批稿,报复稿
     */
    @NotNull(message = "成果版本不能为空")
    @ApiModelProperty("成果版本")
    private String resultsVersion;
    /**
     * 编制情况
     */
    @NotNull(message = "编制情况不能为空")
    @ApiModelProperty("编制情况")
    private String compilation;
    /**
     * 基期年
     */
    @NotNull(message = "基期年不能为空")
    @ApiModelProperty("基期年")
    @Pattern(regexp = "(?:(?:19|20)[0-9]{2})",message = "基期年格式不正确")
    private String baseYear;
    /**
     * 规划起始年
     */
    @NotNull(message = "规划起始年不能为空")
    @Pattern(regexp = "(?:(?:19|20)[0-9]{2})",message = "规划起始年格式不正确")
    @ApiModelProperty("规划起始年")
    private String planStartYear;
    /**
     * 近期目标年
     */
    @NotNull(message = "近期目标年不能为空")
    @Pattern(regexp = "(?:(?:19|20)[0-9]{2})",message = "近期目标年格式不正确")
    @ApiModelProperty("近期目标年")
    private String nearTargetYear;
    /**
     * 规划目标年
     */
    @NotNull(message = "规划目标年不能为空")
    @Pattern(regexp = "(?:(?:19|20)[0-9]{2})",message = "规划目标年格式不正确")
    @ApiModelProperty("规划目标年")
    private String planTargetYear;
    /**
     * 远景目标年
     */
    @NotNull(message = "远景目标年不能为空")
    @Pattern(regexp = "(?:(?:19|20)[0-9]{2})",message = "远景目标年格式不正确")
    @ApiModelProperty("远景目标年")
    private String visionYear;
    /**
     * 规划范围
     */
    @NotNull(message = "规划范围不能为空")
    @ApiModelProperty("规划范围")
    private String planRange;
    /**
     * 规划面积
     */
    @NotNull(message = "规划面积不能为空")
    @Pattern(regexp = "^([1-9]\\d*|0)(\\.\\d{1,2})?$",message = "规划面积格式不正确")
    @ApiModelProperty("规划面积")
    private String planArea;
    /**
     * 规划人口
     */
    @NotNull(message = "规划人口不能为空")
    @Pattern(regexp = "^([1-9]\\d*|0)(\\.\\d{1,2})?$",message = "规划人口格式不正确")
    @ApiModelProperty("规划人口")
    private String planPopulation;
    /**
     * 委托单位
     */
    @NotNull(message = "委托单位不能为空")
    @ApiModelProperty("委托单位")
    private String requester;
    /**
     * 批准文号
     */
    @NotNull(message = "批准文号不能为空")
    @ApiModelProperty("批准文号")
    private String approvalNumber;
    /**
     * 批准时间,如 20211018
     */
    @NotNull(message = "批准时间不能为空")
    @Pattern(regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})(0?[13578]|1[02])(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})(0?[13456789]|1[012])(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})0?2(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))0?229))$",message = "批准时间格式不正确")
    @ApiModelProperty("批准时间")
    private String approvalTime;
    /**
     * 编制单位
     */
    @NotNull(message = "编制单位不能为空")
    @ApiModelProperty("编制单位")
    private String preparationUnit;
    /**
     * 编制时间
     */
    @NotNull(message = "编制时间不能为空")
    @Pattern(regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})(0?[13578]|1[02])(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})(0?[13456789]|1[012])(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})0?2(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))0?229))$",message = "编制时间格式不正确")
    @ApiModelProperty("编制时间")
    private String compilationTime;
    /**
     * 上报单位
     */
    @NotNull(message = "上报单位不能为空")
    @ApiModelProperty("上报单位")
    private String reportingUnit;
    /**
     * 上报时间
     */
    @NotNull(message = "上报时间不能为空")
    @Pattern(regexp = "^((((1[6-9]|[2-9]\\d)\\d{2})(0?[13578]|1[02])(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})(0?[13456789]|1[012])(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})0?2(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))0?229))$",message = "上报时间格式不正确")
    @ApiModelProperty("上报时间")
    private String reportingTime;
    /**
     * 联系人
     */
    @NotNull(message = "联系人不能为空")
    @ApiModelProperty("联系人")
    private String contact;
    /**
     * 联系方式
     */
    @NotNull(message = "联系电话不能为空")
    @Pattern(regexp = "^1\\d{10}$|^(0\\d{2,3}-?|\\(0\\d{2,3}\\))?[1-9]\\d{4,7}(-\\d{1,8})?$",message = "联系电话格式不正确")
    @ApiModelProperty("联系电话")
    private String contactInformation;
    /**
     * 上传成果包路径
     */
    private String resultsPackagePath;
    /**
     * 质量检查,3-通过、2-未通过、1-检查中、0-未检查
     */
    private String quality;
}

4 创建自定义控制器

@Slf4j
@RestController
@RequestMapping("/earlywarning/ocuploadresultspackage")
public class OutcomereviewUploadResultsPackageController {
 @PostMapping
    public Result save(@Valid @RequestBody OutcomereviewUploadResultsPackageEntity evaluationType, BindingResult bindingResult) {
//        验证用户输入信息
        if (!ObjectUtil.isEmpty(bindingResult) && bindingResult.hasErrors()) {
            return ReqValidationUtil.getValidateError(bindingResult);
        }
       ......
}

你可能感兴趣的:(16-基于springboot的validation请求验证)