SpringBoot 与 Jakarta Validation Api 未使用 @Valid Annotation 进行验证

2024-03-16

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

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

有人能发现我的错误吗?

我的 pom.mxml 依赖项的片段:

  <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;
}

还有 REST-Resource 类的片段,其中在正文中使用了 DTO:

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

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

是由于“jakarta”依赖而不是“javax”吗?

希望你能帮我 :)


据我了解Spring Boot 3.0.0 M1 发行说明 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0.0-M1-Release-Notes,Spring Boot 2.X 不支持 Jakarta EE,但 Spring Boot 3.X 将提供支持。

  • 对于 Spring Boot 2.X,你应该坚持使用javax.
  • 对于 Spring Boot 3.X,你应该坚持使用jakarta.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot 与 Jakarta Validation Api 未使用 @Valid Annotation 进行验证 的相关文章

随机推荐

  • 在 Xamarin Android 中访问 UI 线程

    我的应用程序发送和接收 TCP 字符串 这些字符串之一是根据该字符串使对象可见 我当前的代码给出System NullReferenceException has been thrown Object reference not set t
  • jQuery Datatable:标题和搜索在同一行

    目前我的 jQuery 数据表如下所示 我希望历史标题和搜索栏位于同一行 我已经实现了标题和表格 如下所示 h2 History h2 table class table style width 100 thead tr tr thead
  • 如何在我的控制器中使用 Spring HttpRequest?

    我这样设置了测试 SpringBootTest AutoConfigureMockMvc RunWith SpringRunner class public class PublicControllerTest Autowired priv
  • 创建文件夹中每个文件内容的索引

    我正在用Python 制作一个搜索工具 其目标是能够按内容搜索文件 我们主要谈论源文件 文本文件 而不是图像 二进制文件 即使在元数据中搜索将是一个很大的改进 目前我不使用正则表达式 随意的纯文本 这部分算法效果很好 问题是我意识到我主要在
  • 为经典 asp 站点启用日志记录

    我继承了一个经典的 ASP 项目并将其部署在 IIS 7 5 上 我可以访问该网站 但在某些时候我会收到通用 500 错误页面 我想知道发生了什么 所以我认为最好是查看日志 在 c WINDOWS system32 LogFiles 和 c
  • 当RID在SQL Server中遇到相同行时汇总数量

    我尝试了几种选择 但未能得到我想要显示的确切答案 我希望从这里得到想法 以下是我选择进入后的最后温度 RID LOTID SAVID QTY A1278 G926 87 A1278 1 Y976 D958 G 108 A1278 T898
  • 如何在 Django 中为用户创建注册表单

    Django 创建用户的方式是什么 我不是在谈论超级用户 只是一个简单的用户表单和创建帐户 Django 文档很好地涵盖了身份验证主题 并且 Django 本身附带了用于登录 注销 密码更改和重置的视图 对于注册 您必须创建自己的视图 如下
  • 将聊天服务器实现为 WebService

    我有一个学校项目 我必须在其中实现一个聊天应用程序 其服务器将是一个 java web 服务 问题是 我一直认为 Web 服务是调用远程功能的一种方式 而且我不知道如何在 Web 服务上保持 会话 活动 也不知道如何跟踪当前处于活动状态的所
  • 在 URL 中发送参数的最佳且安全的方法

    我正在开发一个网站 该网站具有根据 id 更新和删除数据的功能 现在我担心的是我的网址是 www example com public controller action 1 如果行动是delete 任何人都可以change id from
  • 如何处理 Nimbus Look and Feel 中的派生颜色?

    我想要的是使不可编辑的文本区域的背景与其禁用的背景相同 我知道该颜色可以从UIManager用钥匙TextArea disabled DerivedColor color 214 217 223 parent control offsets
  • 是否可以使用引用键在 Rmarkdown 文档中间插入文章的完整参考文献?

    Here http rmarkdown rstudio com authoring bibliographies and citations html我学习如何在文本中间插入引文并在文档末尾生成完整的参考书目 我想知道是否可以使用引用键得到
  • iText 中的 PdfPageEventHelper

    我正在创建一个 pdf 其中每个 pdf 页面的标题将根据当前页码进行自定义 例如 在第一页中 标题是 第一页 在第二页中 标题是 第二页 依此类推 我们现在要做的是将标题添加到 PdfPTable 中 然后我们还将许多其他内容添加到 Pd
  • UIAlertView按钮操作代码

    有谁知道如何对按钮进行操作UIAlertview 如果是这样 请指导我 void alertView UIAlertView alertView didDismissWithButtonIndex NSInteger buttonIndex
  • iframe加载时间限制使用javascript

    我需要在 5000 毫秒后停止加载我的 iframe 页面 我正在使用这些 但它每 5000 毫秒刷新一次 iframe 这是什么问题 请修复它 谢谢
  • PendingIntent 上的“requestCode”有何用途?

    背景 我通过 AlarmManager 使用 PendingIntent 来发出警报 问题 起初我认为为了取消以前的请求 我必须提供我之前用来启动警报的确切请求代码 但后来我发现我错了 因为取消API http developer andr
  • 如何将 pandas 安装到 Visual Studio Code 中?

    我想读取 Excel CSV 文件 经过研究 我意识到我需要import pandas as pd 有没有办法将其安装到 Visual Studio Code 中 我试过打字import pandas as pd 但显示一条红线 我对Pyt
  • 尝试显示位图时,一目了然的应用程序小部件图像崩溃

    当我尝试在应用程序中显示位图图像 我的应用程序图标 时 它工作正常 但当我尝试在 Widget Glance 中显示它时崩溃 这是我的位图代码 val icon packageManager getApplicationIcon com m
  • az devops 登录挂起

    我正在使用 Windows 10 Azure PowerShell Az 模块 DevOps 扩展 0 18 0 我已登录 DevOps 实例并能够运行所有相关命令 现在 我需要登录到不同的组织 项目 每次执行登录子命令时 窗口都会挂起并锁
  • 将两个表中的数据放入一个视图中

    是否可以将两个表 具有相同字段 的数据抓取到一个视图中 基本上 视图将数据视为一张表 是的 使用 UNION CREATE VIEW vw combined AS SELECT FROM TABLE1 UNION ALL SELECT FR
  • SpringBoot 与 Jakarta Validation Api 未使用 @Valid Annotation 进行验证

    我对 Spring boot 和依赖项 jakarta validation api 有疑问 实际上我有一个简单的 DTO 其中包含一些属性 但是当我在 Valid 注释中调用 REST 函数时 此属性并未得到验证 有人能发现我的错误吗 我