首先先查看springboot项目有没有@valid和@validated依赖,没有的话就导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
1:对于只有参数的时候使用,需要在类上加@validated,验证才生效
/**
* @Author xqf
* @since 2023-08-27
*/
@RestController
@RequestMapping("/sys")
@Api(tags="参数校验")
@Slf4j
@Validated
public class ValidTestController {
@ApiOperation("验证参数")
@RequestMapping(value = "/validParameter", method = RequestMethod.POST)
public Result<JSONObject> checkValidParameter(@NotBlank String validObject) {
Result<JSONObject> result = new Result<JSONObject>();
return result;
}
}
2:验证传对象使用@RequestBody修饰里面的属性,使用@Valid和@Validated都可以如下
package org.jeecg.modules.system.controller;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
/**
* @Author xu
* @create 2023/8/27 11
*/
@RestController
@RequestMapping("/sys")
@Api(tags="参数校验")
@Slf4j
public class ValidTestController {
@ApiOperation("验证对象")
@RequestMapping(value = "/validObjec", method = RequestMethod.POST)
public Result<JSONObject> checkValidObjec(@RequestBody @Valid ValidObject validObject) {
Result<JSONObject> result = new Result<>();
return result;
}
}
注意:验证对象,@NotBlank 注解不适用于整数类型,只能使用@NotNull或@Min(value)
package org.jeecg.modules.system.controller;
import lombok.Data;
import org.jeecg.modules.system.vo.dto.Age;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 验证对象
* @Author xu
* @create 2023/8/27 11
*/
@Data
public class ValidObject {
@NotNull(message = "年龄不可为空")
private Integer age;
@NotBlank(message = "名字不可为空")
private String name;
private Integer phone;
}
4:单单使用@NotBlank验证对象,是会一致提示校验出错如下,这种情况不能对封装对象单独验证。只能对对象里面的属性进行验证
@ApiOperation("验证对象")
@RequestMapping(value = "/validObjec", method = RequestMethod.POST)
public Result<JSONObject> checkValidObjec(@NotBlank ValidObject validObject) {
Result<JSONObject> result = new Result<>();
return result;
}
@NotBlank只对属性进行验证,不对对象进行验证
@@Valid写在类上,失效,需要用@Validated