Java Spring Rest 验证配置属性访问

2024-05-27

我有一个 Spring-JSON/RestAPI,它使用注释驱动的输入验证。@Valid

当我尝试验证另一个对象内的对象时,出现以下错误。

java.lang.IllegalStateException: JSR-303 validated property 'client.application' does not have a corresponding accessor for Spring data binding - check your DataBinder's configuration (bean property versus direct field access)
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.processConstraintViolations(SpringValidatorAdapter.java:153) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
    at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:108) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
    at org.springframework.validation.DataBinder.validate(DataBinder.java:866) ~[spring-context-4.3.2.RELEASE.jar:4.3.2.RELEASE]
    ...

这是此处使用的 json 数据模型:

{ // @Valid MessageDTO
  "title": "Test",
  "message":"Test",
  "client": { // @Valid ClientDTO
    "application": "Test"
  }
}

我在这里跳过了 java 定义,因为在我看来,它会带来太多无用的噪音。

我不想/无法轻松地将 getter 或 setter 添加到我的 DTO,那么我如何遵循该错误消息并将我的 DataBinder 配置为使用“直接字段访问”?我想使用 JavaConfig (@Configuration) 为了这。

使用以下依赖项:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>4.3.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.2.4.Final</version>
</dependency>

EDIT:

控制器:

@RequestMapping(path = "/send", method = { RequestMethod.POST, RequestMethod.PUT })
public void send(@Valid @RequestBody MessageDTO message)

消息DTO:

public class MessageDTO {

    ...

    @Valid
    @NotNull
    public ClientDTO client;

}

客户端DTO:

public class ClientDTO {

    ...

    @NotEmpty
    public String application;

}

我刚刚偶然发现了同样的问题,并为我们找到了解决方案,只是想分享它。

在资源内或@ControllerAdvice您可以将 Spring DataBinder 配置为使用直接字段访问。

@ControllerAdvice    
public class CustomControllerAdvice {

    @InitBinder
    private void activateDirectFieldAccess(DataBinder dataBinder) {
        dataBinder.initDirectFieldAccess();
    }

    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java Spring Rest 验证配置属性访问 的相关文章

  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 使用 php/regex 验证美国电话号码

    EDIT 我混合并修改了下面给出的两个答案 以形成完整的功能 现在它可以完成我想要的功能 然后是一些 所以我想我会将其发布在这里 以防其他人来寻找同样的东西 Function to analyze string against many p
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • simpleframework,将空元素反序列化为空字符串而不是 null

    我使用简单框架 http simple sourceforge net http simple sourceforge net 在一个项目中满足我的序列化 反序列化需求 但在处理空 空字符串值时它不能按预期工作 好吧 至少不是我所期望的 如
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 使用 JMF 创建 RTP 流时出现问题

    我正处于一个项目的早期阶段 需要使用 RTP 广播DataStream创建自MediaLocation 我正在遵循一些示例代码 该代码目前在rptManager initalize localAddress 出现错误 无法打开本地数据端口
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 角度材料设计布局

    How can I design a layout with angular material layout like 我举了一个例子材料设计 http www google com design spec layout structure
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • #1214 - 使用的表类型不支持 FULLTEXT 索引

    我收到一条错误消息 指出该表类型不支持 FULLTEXT 索引 我怎样才能实现这个目标 这是我的桌子 CREATE TABLE gamemech chat id bigint 20 unsigned NOT NULL auto increm
  • D3js 从数组而不是文件中获取数据

    我发现了这个优秀的 d3js 图表here http bl ocks org Caged 6476579 但就我而言 我希望此图表从数组而不是 tsv 文件中获取值 我想让它从表 中获取值 我怎样才能做到这一点 因为它使用一个函数来实现这一
  • 在 Android Pie 上启动 context.startService(intent)

    我在 Activity 的 onResume 上启动了一项服务 它在 Oreo 上运行良好 但最近我看到 Android P 崩溃 显示 无法恢复 Activity 不允许启动服务意图 应用程序在后台 有没有人以前见过这个并且能够应用修复
  • 如何在 ESLint 中支持 ES7

    我有一个使用 WebPack 来使用 ESLint 的项目设置 并且我想使用 ES7 作为内联绑定运算符 目前我收到如下所示的解析错误 Users ryanvice Documents Code pluralsight redux star
  • 通过 ObservableObject 向下传递 GestureState 属性

    我有一个ObservableObject其成员属性为 GestureState包装纸 在我看来 我如何访问GestureState财产 我已经尝试过使用点表示法 绑定尝试公开 GestureState 但它不喜欢那样 我的应用程序状态Obs
  • Cosmos DB 中查询之间的日期

    我正在 Cosmos DB 中构建一个简单的事件存储 该存储的文档结构如下 id e4c2bbd0 2885 4fb5 bcca 90436f79f155 entityType contact history startDate 15046
  • springSecurityService.principal 在 tomcat 8.5 中部署为 WAR 时返回 Null

    Preamble 我正在为 Grails 微服务联盟设计一个 API 网关 这个问题似乎与此中已提交的一系列问题有关存储库 https github com grails plugins grails spring security cor
  • 我可以将我的heroku git repo导入bitbucket吗?如何?

    我的笔记本电脑坏了 我需要从另一台计算机上编码 我正在使用 Heroku 我想将最新版本的代码从 Heroku 获取到另一台机器 据我了解 强烈建议使用 GitHub 或 BitBucket 获取适当的远程存储库 我决定尝试一下 BitBu
  • 是否可以更改 TeamCity 的工件路径

    teamcity 工件的默认路径是 C User BuildServer system artifacts 我怎样才能将其更改为 d TeamCity Artifacts Thanks 对我来说默认是 D BuildServer syste
  • Xcode 5:单元测试未运行

    我创建了一些测试用例 它们都通过了 那是因为它们没有被运行 从 Xcode 中 我得到 Test Suite All tests started at Test Suite All tests finished at Executed 0
  • Android itemizedOverlay 的 onTap 操作被覆盖

    我有一堂课 class MapItemizedOverlay extends com google android maps ItemizedOverlay
  • 当选择模式为 MultiChoice Modal 时,如何防止激活某些 ListView 项目?

    我有一个由自定义 BaseAdapter 填充的自定义 GridView GridView的选择模式是MultiChoiceModal 我想控制长单击时可以激活哪些项目 同时仍然确保它们响应 短 单击事件 BaseAdapter有一个方法叫
  • 如何防止大型 MySQL 导入的连接超时

    在开发过程中 我们的本地 WAMP 服务器如何从测试服务器获取最新数据 即生成数据库转储 然后使用 source 命令上传该转储以加载 sql 文件 最近 在导入的最后 我们收到了有关 old 变量的错误 这些变量在更改之前存储了原始设置
  • 关于 ColorMatrix 转换如何工作的说明

    我正在图像处理应用程序上做一些工作 为了好玩 并且正在努力完全理解 ColorMatrix 转换的工作原理 我了解了线性 仿射变换的基础知识 并且可以通过在线复制示例来很好地理解 但我想完全掌握why有些东西有效 而不是仅仅满足于它有效 例
  • 将 Swagger 描述添加到最小的 .NET 6 API

    我在 NET 6 中有一个小项目 其中包含类似的最少 API app MapGet clients async IClientRepository repo gt var results await repo GetClientsAsync
  • 熊猫:按相等范围分组

    这是我的数据框的示例 df lst wordcount 100 Stats 198765 id 34 wordcount 99 Stats 98765 id 35 wordcount 200 Stats 18765 id 36 wordco
  • `RenamingDelegatingContext` 已弃用。现在我们如何测试 SQLite 数据库?

    As per https stackoverflow com a 13556184 3286489 https stackoverflow com a 13556184 3286489 我们可以使用RenamingDelegatingCon
  • Java Spring Rest 验证配置属性访问

    我有一个 Spring JSON RestAPI 它使用注释驱动的输入验证 Valid 当我尝试验证另一个对象内的对象时 出现以下错误 java lang IllegalStateException JSR 303 validated pr