[英]Spring boot : non-entity bean validation not working
我有正常的Java POJO class,它不是一个实体class,名为Student。 我正在使用 spring 引导验证器。 在我的 REST controller 内,对于一个学生 object 的请求,将返回。 我在学生 class 中设置了不同的验证。 但验证不起作用。 我已经给出了 10 到 30 岁的年龄限制。但它正在创建 35 岁的 Object。 有什么办法可以使这个验证工作? 注意:我这样做是为了测试,如果此验证有效,我将在我的主项目中使用它。
学生
package com.mkyong;
import org.springframework.beans.factory.annotation.Required;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
@Validated
public class Student {
@NotEmpty
private String id;
@NotEmpty
private String name;
@Min(10)
@Max(30)
private int age;
public Student() {
}
public Student(String id, String name, @Min(10) @Max(30) int age) {
this.id = id;
this.name = name;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge( @Min(10) @Max(30) int age) {
this.age = age;
}
}
**休息Controller:**
public class BookController {
// Find
@GetMapping("/student")
Student studentCreate() {
Student student = new Student("","",35);
student.setAge(36);
return student;
}
}
@Valid
注释进行注释,您的实体将被自动验证javax.validation.Validator
按照你的情况:
Validator#validate
。public class BookController {
@Autowired
Validator validator;
// Find
@GetMapping("/student")
Student studentCreate() {
Student student = new Student("","",35);
student.setAge(36);
Set<ConstraintViolation<Student>> result = validator.validate(student);
if (!result.isEmpty()) {
//do here whatever you want with each validation violation.
}
return student;
}
}
有关更多详细信息,请查看官方文档: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#validation
注意:取决于您的 spring 启动版本,您的依赖项中可能缺少org.springframework.boot:spring-boot-starter-validation
依赖项,因此请仔细检查它是否存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.