【发布时间】:2021-07-15 21:07:05
【问题描述】:
我正在学习 Spring Boot,我正在为 @PostMapping 添加验证,但不知何故,即使值无效,它也总是会创建一个对象。
医院.java
public class Hospital {
private Integer id;
@Size(min = 2)
private String name;
@Size(min = 2)
private String city;
public Hospital(Integer id, String name, String city) {
this.id = id;
this.name = name;
this.city = city;
}
控制器
@Autowired
HospitalData data;
...
@PostMapping("/hospital")
public ResponseEntity<Hospital> addHospital(@Valid @RequestBody Hospital hospital){
Hospital newHospital = data.addHospital(hospital);
URI location = ServletUriComponentsBuilder
.fromCurrentRequest()
.path("/{id}")
.buildAndExpand(newHospital.getId()).toUri();
return ResponseEntity.created(location).build();
}
pom.xml
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
之前我在使用Spring 2.3.10 RELEASE时添加了下面的依赖,但是它不起作用,所以我添加了上面的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
【问题讨论】:
-
使用 spring-boot-starter-validation,就像在这篇文章中描述的那样:baeldung.com/spring-boot-bean-validation 我认为这没有理由不起作用。
-
给我们一些具体的例子,说明哪些无效值已经通过而没有失败
-
@Size(min = 2)并不意味着它不能为空。在这种情况下,您还需要另一个注释@NotNull -
@Boug :我添加了@NotNull 和@Size(min=2),当我通过
{ "name": "b", "city": "A" }时,它仍然创建了201。
标签: java spring spring-boot validation