覆盖 Spring 表单错误消息

2024-03-08

在 Spring 中如何覆盖默认表单错误消息?

我正在使用一个Validator和一个属性文件来添加我自己的错误消息,但是 例如,如何覆盖因转换/编码错误而打印的消息?

它们似乎是自动生成的,我认为对用户没有帮助:

Failed to convert property value of type java.lang.String to required type java.lang.Double for property minPrice; nested exception is java.lang.NumberFormatException: 

您可以通过在本地化包中使用遵循 Spring 定义的约定的键创建自定义消息来覆盖默认值DefaultMessageCodeResolver http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/validation/DefaultMessageCodesResolver.html。为了完整起见,这里是其文档的相关部分:

将为对象错误创建两个消息代码,如下 顺序(使用前缀格式化程序时):

1.: code + "." + object name
2.: code 

将为字段规范创建四个消息代码,在 以下顺序:

1.: code + "." + object name + "." + field
2.: code + "." + field
3.: code + "." + field type
4.: code 

例如,如果代码为“typeMismatch”,对象名称为“user”,字段 “年龄”:

1. try "typeMismatch.user.age"
2. try "typeMismatch.age"
3. try "typeMismatch.int"
4. try "typeMismatch" 

因此,可以利用该解析算法来显示 绑定错误的特定消息,例如“required”和 “类型不匹配”:

at the object + field level ("age" field, but only on "user");
at the field level (all "age" fields, no matter which object name);
or at the general level (all fields, on any object). 

对于数组、列表或映射属性,这两个代码都用于特定 生成整个集合的元素和元素。假设有一个字段 对象“user”中数组“groups”的“name”:

1. try "typeMismatch.user.groups[0].name"
2. try "typeMismatch.user.groups.name"
3. try "typeMismatch.groups[0].name"
4. try "typeMismatch.groups.name"
5. try "typeMismatch.name"
6. try "typeMismatch.java.lang.String"
7. try "typeMismatch" 

默认情况下,错误代码将放置在开头 构建的消息字符串。 messageCodeFormatter 属性可以是 用于指定替代的串联格式。

为了将所有代码分组到您的特定类别中 资源包,例如“validation.typeMismatch.name”而不是 默认“typeMismatch.name”,考虑指定前缀为 应用。

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

覆盖 Spring 表单错误消息 的相关文章

随机推荐

  • 无法打开选定的 VM 调试端口 (8700)。确保您没有运行 DDMS 或 eclipse 插件的另一个实例

    我正在尝试在 eclipse kepler 中执行 android 程序 但是 每次执行时我都会收到此消息 我按照大家对这个问题所说的做了 Making sure there is a line on windows Host file t
  • Xcode:“无法保存文档。您没有权限。”

    尝试在 Xcode 4 中保存文件时出现此错误 无法保存文档 您没有权限 要查看或更改权限 请在 Finder 中选择该项目 然后选择 文件 gt 获取信息 当然 将文件保存在 TextMate 中效果很好 权限 rw r r 与上次工作时
  • 使用 Ionic 框架将 html 文件的内容嵌入到另一个 html 页面?

    我目前正在创建一个网站使用离子框架 http ionicframework com左侧有一个侧边栏 用户可以单击某个项目转到网站的另一个页面 现在我必须将侧边栏的代码复制到每个页面 这是没有用的 也不是可行的方法 所以我的问题是是否可以将
  • 定期重置嵌入式 H2 数据库

    我正在演示服务器中设置应用程序的新版本 并且希望找到一种每天重置数据库的方法 我想我总是可以有一个 cron 作业执行删除和创建查询 但我正在寻找一种更干净的方法 我尝试使用带有删除创建方法的特殊持久性单元 但它不起作用 因为系统频繁地 按
  • 无法使用 C# 中的 CryptEncrypt/CryptDecrypt 进行解密

    我制作了一个小应用程序来加密和解密一些文本 只要我直接使用加密中的字节数组 一切都很好 但是 一旦我复制了数组来模拟将加密文本作为文件发送的过程 解密就不会运行 为什么我无法使用复制的数组运行解密 using System using Sy
  • Python 中的事件驱动系统调用

    我正在尝试使用系统调用或子流程来实现事件驱动的流程 基本上我想启动一个非阻塞系统命令 并在完成该系统调用后 我想要调用一个函数 这样我就可以启动 GUI 进度条 启动系统命令并让进度条继续 当系统调用完成时 让进度条停止 我绝对不想做的是生
  • 在 html 字符串中插入 JavaScript 数组中的随机元素

    我有一个字符串数组 var prepositions on in under behind above 我想将此数组中的随机元素插入到 html 字符串中所示的间隙处 The yellow object is the blue object
  • WordPress pre_get_posts 和 date_query

    我正在尝试使用 pre get posts 挂钩来更改年度存档结果 以便它显示整个学年的帖子 我使用的是 WordPress 版本 3 9 2 function get posts by academic year query if que
  • 如何通过revit API访问所有族类型?

    是否可以使用 Revit API 访问特定类别 例如窗户 门等 的所有族类型 与实例相反 据我所知 使用 FilteredElementCollector doc OfCategory ToElements 或 FilteredElemen
  • 根据输入字段的值更改文本颜色或背景[重复]

    这个问题在这里已经有答案了 可能的重复 如何使用 Javascript 更改背景颜色 https stackoverflow com questions 197748 how do i change the background color
  • CQRS - 如何对场景执行系统进行建模

    我最近开始为我即将启动的一个绿地项目研究 CQRS 和 DDD 我研究了 Udi Dahan Greg Young Mark Nijhof 等人的大量资料 这些确实非常有帮助 我想我对这些概念有了很好的理解 但是 我仍然有一些关于如何将这些
  • Android:如何将 ActionBar“Home”图标更改为应用程序图标以外的其他图标?

    我的应用程序的主图标在一张图像中由两部分组成 一个徽标和其下方的几个字母 这对于应用程序的启动器图标效果很好 但是当图标出现在 ActionBar 的左边缘时 字母会被切断 看起来不太好 我想为 ActionBar 提供一个单独版本的图标
  • 笨拙地计算一组递增数字之间的差异,有更漂亮的方法吗?

    下面的代码工作得很好 但看起来很冗长 肯定有更优雅的方法来计算这个吗 我的想法是 我有一个包含 100 个递增时间戳的列表 我想查看这些时间戳并计算每个时间戳之间的平均时间 下面的代码可以运行 但我确信像这样反转列表确实效率很低 有什么建议
  • 替换除正数/负数之外的所有内容

    对于替换所有正数 许多问题已经得到解答 但是 我找不到任何保留正数和负数的答案 我想替换所有非数字 正数或负数 的内容 输出应如下所示 例如 0 success id 1234 gt 0 1234 and 10 failure id 234
  • Composer 从同一存储库上的另一个分支拉取依赖项

    我有以下 Composer 1 6 5 设置 require CRMPicco GolfBundle dev golf bundle repositories type git url email protected cdn cgi l e
  • 使用 VB.NET 的秒表循环

    我想使用 VB NET 创建一个带有此接口的简单计时器 我想按 Button1 并开始在文本框中计算秒数 我不想使用计时器组件 因为它不提供高分辨率 https stackoverflow com questions 10470276 my
  • 如何使用Content Provider实现复杂的查询?

    我问这个问题是因为我不太确定如何与 Android 内容提供商合作 我的数据库子集包含 8 个表 我需要创建复杂的查询来获取一些数据 我的内容提供程序可以很好地处理简单的查询 例如 我的表上有一个 PersonPersonModel jav
  • 检查 JavaScript 中的全局属性/函数是否已被覆盖

    JavaScript 可以轻松覆盖全局对象的属性和函数 我想找到一种方法来检查全局属性的原始版本是否已被替换 考虑有人将其放入 HTML 中 如果 myscript js 在某处调用encodeURIComponent 函数 它现在的行为将
  • 将 XX:XX AM/PM 转换为 24 小时制

    我搜索过谷歌 但找不到如何获取字符串 xx xx 上午 下午 例如下午 3 30 并将其更改为现在的 24 小时 例如 前一个时间是 15 30 我研究过简单地使用 if then 语句来操作字符串 但它看起来非常乏味 有什么简单的方法可以
  • 覆盖 Spring 表单错误消息

    在 Spring 中如何覆盖默认表单错误消息 我正在使用一个Validator和一个属性文件来添加我自己的错误消息 但是 例如 如何覆盖因转换 编码错误而打印的消息 它们似乎是自动生成的 我认为对用户没有帮助 Failed to conve