【问题标题】:SpringBoot with Jakarta Validation Api not validating with @Valid Annotation带有 Jakarta Validation Api 的 SpringBoot 未使用 @Valid Annotation 进行验证
【发布时间】:2021-01-24 09:08:57
【问题描述】:

我对 Spring boot 和依赖项 jakarta-validation-api 有疑问。

实际上我有一个简单的 DTO,它包含一些属性。但是,当我在 @Valid 注释中调用 REST 函数时,并没有验证此属性。

有人能找出我的错误吗?

我的 pom.mxml 依赖项的 sn-p:

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

  <dependency>
    <groupId>jakarta.validation</groupId>
    <artifactId>jakarta.validation-api</artifactId>
    <version>3.0.0</version>
  </dependency>

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

  <dependency>
    <groupId>jakarta.ws.rs</groupId>
    <artifactId>jakarta.ws.rs-api</artifactId>
    <version>3.0.0</version>
  </dependency>

我的 DTO 课程:


import jakarta.validation.Valid;

@Data
public class TestDTO implements Serializable {
    private static final long serialVersionUID = -1362258531757232654L;

    @NotEmpty(message = "Id could not be empty or null.")
    @Size(min = 36, max = 36, message = "Id must contains exactly out of 36 characters.")
    private String id;

    @Min(value = 1, message = "Page size cannot be null or <= 0.")
    private Integer page;
}

还有一个在主体中使用 DTO 的 REST-Resource 类的 sn-p:

@PostMapping(path = "/")
public Integer testValidation(@Valid @RequestBody TestDTO body) {
        LOGGER.info(body);
        return 1;
    }

实际上我认为当我调用 Post-REST 方法时,它会在进入方法体之前进行验证,但实际上它进入方法体之前没有经过验证。

是因为“jakarta”依赖而不是“javax”吗?

希望你能帮助我:)

【问题讨论】:

标签: spring-boot maven bean-validation


【解决方案1】:

就我而言(弹簧靴 2.4.*)。 我删除了jakarta.validation-api 依赖项,然后它就可以工作了。

使用javax.* 不是jakarta.*

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2011-12-26
    • 2015-11-23
    • 1970-01-01
    相关资源
    最近更新 更多