16-基于springboot的validation请求验证
2022-05-12 本文已影响0人
wshsdm
1 添加依赖库,修改pom.xml
<!-- 启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--验证模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
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<String,String> fieldErrors = new HashMap<String, String>();
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);
}
......
}