配置参数校验
import org.hibernate.validator.HibernateValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
/**
* @author felix
*/
@Configuration
public class ValidationConfig {
@Bean
public Validator validator() {
ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
.configure()
// 快速失败模式
.failFast(true)
.buildValidatorFactory();
return validatorFactory.getValidator();
}
}
新增或者更新校验部分字段
在开发过程中新增时主键ID是必备传的,更新时ID是必传的,校验实现自定义两个用于校验的注解。
更新
import javax.validation.groups.Default;
/**
* @author felix
*/
public interface UpdateGroup extends Default {
}
新增
import javax.validation.groups.Default;
/**
* @author felix
*/
public interface AddGroup extends Default {
}
使用
model
@NotNull(groups = {UpdateGroup.class}, message = "修改目的地ID不能为空")
@Valid
private BaseInfo baseInfo;
@Valid
private DetailsInfo detailsInfo;
@ApiModelProperty(value = "目的地ID/新增时不传/修改时必传", required = false)
@NotNull(groups = {UpdateGroup.class}, message = "修改目的地群ID不能为空")
private Long id;
@Data
@Validated(value = AddGroup.class)
public static class BaseInfo {
}
controller
- 新增
@RequestBody @Validated(value = AddGroup.class)
- 更新
@RequestBody @Validated(value = UpdateGroup.class)