我之前使用的SpringBoot的1.4.3的版本,无论我怎么修改都无法解决这个问题,查看了诸多的资料也于事无补,无奈之下只能升级了SpringBoot的版本成功解决了这个问题。
首先先看一下1.4.3版本的代码,我再类上加上@Validated注解,校验还是失效的,后来我又再入参处又加上@Valid注解还是校验失效的。后来又引入各种jar包还是没有解决,
@RestController
@Validated
public class SelectDateController {
@RequestMapping("/testThree")
public String testDynamicSql(@NotNull String str,
@NotBlank String money){
if (money != null && str!=null) {
selectDateService.selAllDateTwo(money);
}
List<JSONObject> jsonObjectList = selectDateService.selAllDateThree();
jsonObjectList.forEach(item->{
System.out.println(item);
});
return "success";
}
}
下面进入正题,升级成2.6.3的版本后,引入了以下依赖,然后再类上加上@Validated注解成功解决了这个问题?
注意:一定要再类上加?在方法与入参处加都不能成功的进行校验并且使用@Valid注解也会校验失败的。
<!-- Spring boot 2.3之前可以直接使用@NotNull与@NotBlank等注解
2.3以后删除了hibernate-validator的依赖所以需要加下面的注解
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
代码如下
@RestController
@RequestMapping("test")
@Validated
public class TestController {
@RequestMapping("/testNot")
public String test(@NotNull(message = "msg不能为空") String msg,
@NotBlank String str, @Size(min = 6) String size){
System.out.println(msg);
System.out.println(str);
System.out.println(size);
System.out.println("我的注解终于可以使用了");
return "success";
}
}
不管在那个版本,@Validated引入的都是org.springframework.validation.annotation.Validated;这个包下的,虽然解决了问题,但是没彻底弄明白,如果有大佬看到,请赐教。祝各位身体健康
|