当前位置: 首页 > 知识库问答 >
问题:

@NotNull约束在Spring Boot中不起作用

解晟
2023-03-14
@Entity
public class Employee  implements Serializable{
    @Id
    //@GeneratedValue(strategy=GenerationType.AUTO)
    private int id;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    //@Id
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }

    @NotNull  // not working
    private String name;
    private String phone;
}
@Controller
public class URLController {
    @Autowired
    EmployeeServiceImpl empService;

    @GetMapping({"/", "/index"})
    public String index1(Model model){
        model.addAttribute("employee",new Employee());
        return "index";
    }

    @PostMapping("/result")
    public String result(@Valid @ModelAttribute Employee employee){
        System.out.print(employee.getName()); 
        empService.save(employee);
        return "result"; 
    }
}
<groupId>com.springs</groupId>
<artifactId>springs</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>springs</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

我正在使用model属性来获取employee对象。xml文件包含hibernate验证器依赖项。

共有1个答案

太叔小云
2023-03-14

您必须在代码中的映射部分添加@Valid annotaion(例如)

void addEmployee(@Valid Employee emp);

使用此导入“import javax.validation.valid;”

另一个注意:如果要验证列表,必须创建一个包装器列表,如下所示

public class ValidList<E> implements List<E> {

@Valid
private List<E> list;}
 类似资料:
  • 问题内容: 我试图将@NotNull约束添加到我的Person对象中,但是我仍然可以@POST具有空电子邮件的新Person。我在MongoDB上使用Spring Boot Rest。 实体类: 存储库类: 应用类别: pom.xml 当我通过邮递员@POST一个新对象时,例如: 我仍然使用此有效负载创建: 问题答案: 我遇到了同样的问题,但是仅启用验证对我而言不起作用,这确实与JPA和Mongo

  • 当我通过邮递员发送一个新对象时,喜欢: 我仍然得到使用此有效负载创建的:

  • 我有两个组件和。每个组件都是由<code>ConstraintLayout</code>创建的。现在,我从上面的组件创建<code>WelcomeScreen</code>。 用例1:使用静态< code>ConstraintLayout(在< code>ConstraintLayout内的< code>ConstraintLayout) 结果:布局预览不显示任何内容 用例2:<代码>Welcom

  • 问题内容: 首先,我创建了一个表,例如 然后在该表中插入值 MySQL没有显示错误,它接受了值。 问题答案: 如果您使用MySQL 8.0.15或更早版本,则MySQL参考手册会说: 该CHECK子句已解析,但所有存储引擎均将其忽略。 尝试触发… 希望能有所帮助。

  • org.checkerframework.checker.nullness.qual.nonnull org.jetbrains.annotations.notnull javax.annotation.nonnull 在所有情况下,为其分配空值不会从IntelliJ2016.2中产生任何抱怨。 根据Intellij的说法,这一切都很好。 我肯定这一定管用,我做错了什么? 我已经上传了一个在这里不

  • 下面的函数只是将视图移动到一个新位置。它不显示动画: