Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导:非实体bean验证不起作用_Java_Spring_Spring Boot_Validation - Fatal编程技术网

Java Spring引导:非实体bean验证不起作用

Java Spring引导:非实体bean验证不起作用,java,spring,spring-boot,validation,Java,Spring,Spring Boot,Validation,我有一个普通的JavaPOJO类,它不是一个实体类,名为Student。我正在使用spring启动验证程序。在我的REST控制器中,对于请求,只返回一个学生对象。我在学生课堂上设置了不同的验证。但这种验证是行不通的。我把年龄限制在10到30岁之间。但它正在创造一个35岁的物体。有什么方法可以让这个验证有效吗?注意:我做这个测试,如果这个验证工作,我将在我的主要项目中使用它 学生 package com.mkyong; import org.springframework.beans.facto

我有一个普通的JavaPOJO类,它不是一个实体类,名为Student。我正在使用spring启动验证程序。在我的REST控制器中,对于请求,只返回一个学生对象。我在学生课堂上设置了不同的验证。但这种验证是行不通的。我把年龄限制在10到30岁之间。但它正在创造一个35岁的物体。有什么方法可以让这个验证有效吗?注意:我做这个测试,如果这个验证工作,我将在我的主要项目中使用它

学生

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;
    }
}
**休息控制器:**

public class BookController {

    // Find
    @GetMapping("/student")
    Student studentCreate() {
        Student student = new Student("","",35);
        student.setAge(36);
        return student;
    }
}
  • 如果您的请求主体参数将使用
    @Valid
    注释进行注释,则您的实体将自动验证
  • 您可以使用:
    javax.validation.Validator
根据您的情况:

  • 在BookController中注入验证程序
  • 使用DTO作为参数调用
    Validator#validate
  • 检查是否有病毒
公共类BookController{
@自动连线
验证器;
//发现
@GetMapping(“/student”)
学生创建(){
学生=新生(“,”,35);
学生年龄(36岁);
设置结果=validator.validate(学生);
如果(!result.isEmpty()){
//在这里,您可以对每个验证冲突执行任何操作。
}
留学生;
}
}
有关更多详细信息,请查看官方文档:

注意:
取决于您的spring boot版本,
org.springframework.boot:spring boot starter验证
依赖项可能在您的依赖项中丢失,因此请仔细检查它是否存在。

如果您正在创建具有新属性的学生,验证应该如何工作?尝试向学生发送POST请求,并使用
@Valid
@burm87注释参数new有什么问题?使用new创建对象不会触发验证。这是一个基于注释的验证。那么,@BlackSwan,您希望何时进行此验证?我猜什么时候调用你的API?@burm87实际上我不会使用学生作为请求主体。我想大致验证一下。