java 注解@NotBlank和@NotNull无效

aiqt4smr  于 2023-09-29  发布在  Java
关注(0)|答案(2)|浏览(219)

我已经遵循了几个指南来让@NotNull和@NotBlank注解工作,但我根本无法让它们工作。这是一个Spring Boot项目。我插入了这些依赖项:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-validation</artifactId>
   <version>3.0.4</version>
</dependency>

<dependency>
   <groupId>org.hibernate.validator</groupId> 
   <artifactId>hibernate-validator</artifactId> 
   <version>8.0.0.Final</version>
</dependency>

我在控制器中输入了@Valid,importando:

import javax.validation.Valid;

我使用了这样的注解:

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
    @NotNull(message = "name can't be null")
    @NotBlank(message = "name can't be empty")

我试过许多办法,但没有一个能帮我

voj3qocg

voj3qocg1#

jakarta验证在以下依赖项中可用

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

取代

<dependency>
   <groupId>org.hibernate.validator</groupId> 
   <artifactId>hibernate-validator</artifactId> 
   <version>8.0.0.Final</version>
</dependency>

使用spring-boot-starter-validation并确保它与Sping Boot 保持相同的版本,重新加载项目,以便它可以拉取新的依赖项并删除hibernate,之后您可以使用jakarta导入,例如

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import jakarta.validation.Valid;

请记住,javax包在Sping Boot 2 / Spring 5中工作,之后包在Spring boot / Spring的新版本中从javax移动到jakarta。
另外,明智的做法是在父标签中定义spring版本,而不是在每个依赖标签中单独定义,它应该看起来像这样:

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

你所有的spring依赖项都将继承这个版本,更容易维护,更安全的是不要混淆一些可能导致问题的版本。

bpsygsoo

bpsygsoo2#

成功了!谢谢大家的帮助。对于所有和我有同样问题的人,在帖子中我被建议:

  • 删除hibernate-validator
  • 删除冲突的spring-boot-starter-validation版本
  • 使用import jakarta.validation.constraints而不是javax

相关问题