一。星云系统(不用额外引包,springboot框架支持)
1.实体类
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.Valid;
import javax.validation.constraints.Pattern;
@Data
public class OrgStationAddDTO {
@NotBlank(message = "运营商id不能为空")
@NotNull(message = "方案类型不能为空!")
@Pattern(regexp = "^[A-Z_0-9]+", message = "运营商标识只能包含大写字母、数字、下划线")
private String code;
@Valid 控制器上面加注解@Validated
private List<StationParamSetRecordAddDTO> stationParamSetRecordAddDTOList;
}
2.控制器
import javax.validation.constraints.NotBlank;
public ResponseEntity<String> add(@RequestBody @Valid OrgStationAddDTO stationAddDTO) {
}
3.失效处理(postman请求直接400,断点没有进入控制器)
原因: 去全局异常处理类添加参数异常处理
处理方式:再添加如下参数异常处理类
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = {Exception.class})
@ResponseBody
public ResponseEntity handleException(Exception ex) {
String message = "";
//参数异常
if (ex instanceof MethodArgumentNotValidException) {
BindingResult result = ((MethodArgumentNotValidException) ex).getBindingResult();
List<ObjectError> list = result.getAllErrors();
if (list.size() > 0) {
message = list.get(0).getDefaultMessage();
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", message);
return new ResponseEntity<>(jsonObject, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
//自定义的异常
if (ex instanceof BasicRuntimeException) {
BasicRuntimeException basicRuntimeException = (BasicRuntimeException) ex;
message = basicRuntimeException.getMessage();
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", message);
return new ResponseEntity<>(jsonObject, HttpStatus.INTERNAL_SERVER_ERROR);
}
//JDK自带的异常
if (ex instanceof RuntimeException) {
RuntimeException runtimeException = (RuntimeException) ex;
message = runtimeException.getMessage();
JSONObject jsonObject = new JSONObject();
jsonObject.put("message", message);
return new ResponseEntity<>(jsonObject, HttpStatus.INTERNAL_SERVER_ERROR);
}
return new ResponseEntity<Object>(message, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
二。绩效绩效系统 Hibernate Validator
1.项目导包
//1.导包
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
//工具类 validateUtil
package com.ruoyi.framework.util;
import org.hibernate.validator.HibernateValidator;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
public class ValidateUtil<T> {
private static Validator validator;
static {
validator = Validation.byProvider(HibernateValidator.class).configure().failFast(false).buildValidatorFactory().getValidator();
}
public static <T> Set<ConstraintViolation<T>> validate(T obj, Class... groupClasses) {
Set<ConstraintViolation<T>> constraintViolations;
if (groupClasses != null && groupClasses.length > 0) {
constraintViolations = validator.validate(obj, groupClasses);
} else {
constraintViolations = validator.validate(obj);
}
return constraintViolations;
}
public static <T> String validateOne(T obj, Class... groupClasses) {
Set<ConstraintViolation<T>> constraintViolations;
if (groupClasses != null && groupClasses.length > 0) {
constraintViolations = validator.validate(obj, groupClasses);
} else {
constraintViolations = validator.validate(obj);
}
for (ConstraintViolation<T> constraintViolation : constraintViolations) {
return constraintViolation.getMessage();
}
return null;
}
}
2。使用方法
//1.实体类加注解
@Length(min=8,max= 13,message = "联系电话不正确,仅允许{min}-{max}个字符") 页面填写汉字13个 = 控制器max13 = 数据库varchar(13)
@NotBlank(message = "联系电话不能为空")
@Valid 用在一个对象有集合的情况
groups用法
1.实体类:@NotBlank(message = "请填写主管部门" ,groups={TargetCapitalSubmitGroup.class})
2.控制器:result = ValidateUtil.validateOne(ptp, Default.class, TargetCapitalSubmitGroup.class);
3.控接口:
package com.ruoyi.beforehand.domain.po.validator;
public interface TargetCapitalSubmitGroup {
}
//2.控制器
String result = ValidateUtil.validateOne(ptp, Default.class, TargetCapitalSubmitGroup.class);
if (result != null) {
return AjaxResult.error(result);
}