本地化 Spring Boot 验证消息中的消息参数未解析

2024-04-15

我正在使用构建一个项目春季启动2.1.8, 我有spring-boot-启动器-web在我的 POM 中,我可以看到 Maven 拉动休眠验证器 6.0.17到类路径上。

我的消息位于资源文件夹中,并且它们似乎已正确查找,因此当我更改区域设置时,Spring 会从正确的文件加载消息。

我的@RestController中的相关方法采用@Valid和@RequestBody注释的DTO。当 DTO 验证失败时,它会触发 ResponseEntityExceptionHandler#handleMethodArgumentNotValid() 在我的控制器建议中触发。

My DTO has a field annotated in the following manner: enter image description here

我的 messages.properties 有以下条目:

This is how my message is written to the response: enter image description here

正如你所看到的消息参数不会被插入,而是花括号会被去掉- 当我使用 {0} 而不是 {min} 或让 Size 注释使用默认消息 - javax.validation.constraints.Size.message 时,也会发生同样的情况。

你能给些建议么?


This https://stackoverflow.com/a/5786842/2779183答案对我理解问题出在哪里有很大帮助。

要点是 Hibernate 解析的消息最终作为 BindingResult 中的默认消息。

因此,人们应该:

  1. 从自定义消息中删除大括号,然后使用:
  String msg = messageSource.getMessage(e.getDefaultMessage(), e.getArguments(), locale);

正确查找插入所有参数的消息。

OR

  1. 完全放弃自定义消息并依赖 Spring 消息代码 - 例如用于尺寸注释使用尺寸.型号.字段在 message.properties 和进行查找的代码中,例如:
String msg = messageSource.getMessage(e, locale);

我的期望是来自 BindingResult 的默认消息将具有完全插入的文本,但看起来如果消息在大括号中,Hibernate 会在包中查找消息但不会插入参数,而是清理字符串并去掉任何大括号。

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

本地化 Spring Boot 验证消息中的消息参数未解析 的相关文章

随机推荐

  • Ember 路由、控制器、视图

    我已阅读 Ember js 网站上的大部分初学者指南 但我仍然对放置内容的正确位置感到困惑 Route 根据在线研究 人们建议将与路由相关的逻辑放入路由中 一切都很好 但我唯一能想到的是this transisionTo 我在其他地方读到所
  • Asp.net 超链接控件相当于

    我想在 asp net 中定义一个 HyperLink 控件 它生成类似于以下内容的 html 输出 a href a 如何才能做到这一点 我同意 SLAks 的观点 但你就这样吧
  • 苹果推送通知限制

    我想知道我们一次向用户发送的苹果推送通知的数量是否有限制 我可以使用 APNS 服务一次发送 100 000 个推送通知吗 如果您在短时间内向同一设备发送多个通知 推送服务将仅发送最后一个通知 https developer apple c
  • 如何使用第三方网络服务避免代码重复 - 不使用动态?

    我正在使用第三方网络服务 其所有方法都具有以下签名 SomeResponseClass SomeMethod SomeRequestClass request 每个方法都有自己的请求类和响应类 但是所有请求和所有响应都有一些共同点 每个请求
  • 是否有在导航栏添加相同的滚动菜单栏?

    我已经再次发布了我的这个问题 但我还没有得到完美的答案 在这里我将再次解释我的问题 这对我来说非常重要 所以不惜一切代价我必须解决它 现在我的问题是 假设我有 4 个tabbaritem in a tabbarController以及项目
  • COMPLETE pragma 不会阻止不完整模式警告

    我为类似列表的类制作了两个模式视图 infixr 5 lt pattern lt Stream s gt Token s gt s gt s pattern b lt bs lt uncons gt Just b bs where b lt
  • JSON从EJS到JS中的JSON对象

    我将 EJS 与 Node JS 结合使用 并向其中传递一个 JSON 对象 但需要将其作为页面中的可用对象进行访问 我从中收到意外的令牌 o 错误 var initData JSON parse 我不明白这里出了什么问题 这是渲染时文件中
  • 如何在 json 中的事件标题中添加换行符

    我无法弄清楚的一件事是能够添加 html 而不会被转义或实际创建新行 这是我的 json id 30 title Basics n Awesome Abs Butt Blast n Danielle B start 2010 05 11T0
  • 在服务器运行时使用tinytest测试Meteor客户端

    是否可以在服务器运行时使用tinytest测试Meteor客户端 这是我仅测试客户端的示例 Tinytest add Add object to a collection function test var people new Meteo
  • Apache 重写规则将所有请求重定向到包含另一个 .htaccess 的子目录和重写规则

    我的网络服务器上有公共和私人项目 我将所有公开内容放入网络服务器根目录中 并且我有一个private我只能从本地网络访问该文件夹 由其中的 htaccess 设置 我想简单地将每个私人项目放在private文件夹并自动处理请求 但希望 UR
  • 检查字符串列表是否可以链接

    Question 实现一个功能bool chainable vector
  • 如何在Android移动网站中强制使用数字键盘

    我有一个移动网站 它有一些 HTMLinput其中的元素 如下所示
  • CMake:如何标准化路径? [复制]

    这个问题在这里已经有答案了 是否有一种可靠的方法来标准化 CMake 中的路径 例子 Let s assume that an environment variable MY ROOT DIR is set that points to s
  • Windows Phone 8 上“无法安装公司应用程序”

    我为 Windows Phone 8 开发了一个公司应用程序 并完成了所有建议的步骤来设置它进行安装 我拥有 Symantec 代码签名证书 并且已生成应用程序注册令牌和签名的 XAP 并将其托管在 OneDrive 上的公共文件夹中 我使
  • 如何将 UWP StorageFile 转换为 .NET FileInfo?

    现在 UWP 支持 NET Standard 2 0 它可以访问更多 System IO 命名空间 包括Fileinfo https msdn microsoft com en us library system io fileinfo v
  • 在 ember 数据中,在 forEach 循环中调用 destroyRecord 会破坏循环吗?

    我正在为我的一个项目开发一个简单的标签模型 我已经在 Angular 中实现了类似的东西 但我想在 Ember 中尝试一下 型号代码如下 Tag DS Model extend name DS attr string user DS bel
  • Amazon s3 putObject 标记不起作用

    我正在尝试使用 putObject 方法上传到 Amazon s3 时添加标签 根据文档 我已将标签创建为字符串类型 我的文件已上传到 Amazon s3 但我无法使用提供的标签数据查看文件对象的对象级别标签 根据文档遵循以下代码示例 va
  • 使 td 固定大小(宽度,高度),而其余 td 可以扩展

    您知道如何固定表格中 td 宽度和高度的大小 从而允许表格上的其余 td 根据需要扩展吗 问题是 当 td 内部有数据时 它不会比数据缩小得更多 但如果为空 它会一直缩小 如果扩大窗口 td 也会扩大 我想保留 td 的大小 无论您扩展还是
  • Ruby 中的“+=”(加等于)是什么意思? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 本地化 Spring Boot 验证消息中的消息参数未解析

    我正在使用构建一个项目春季启动2 1 8 我有spring boot 启动器 web在我的 POM 中 我可以看到 Maven 拉动休眠验证器 6 0 17到类路径上 我的消息位于资源文件夹中 并且它们似乎已正确查找 因此当我更改区域设置时