使 javax 验证错误消息更加具体

2023-11-27

抱歉,如果这个问题之前已在某处讨论过。如果有请给我链接,我还没有找到满意的答案。

我一直在寻找一种方法,让 javax 验证提供的错误消息更加具体。

我当前的 @Min 注释消息在 ValidationMessages.properties 文件中指定:

javax.validation.constraints.Min.message=The value of this variable must be less than {value}.

这会按预期打印出来

The value of this variable must be less than 1

我想要的是该消息还包括验证失败的变量(和类)的名称以及失败的变量的值。所以更像。

The value of class.variable was 0 but not must be less than 1

任何帮助将不胜感激。

Klee


嗯。恼人的!在我看来,你有 3 个选择:

  1. 你可以写一个自定义的消息插值器并将其替换到您的验证配置中,但这似乎非常脆弱。

  2. 您可以以 @Min 的风格声明您自己的自定义注释(请参阅此处如何进行自定义验证器) ...

  3. ..但是您需要的信息实际上保存在来自 Validator 实例的 ConstraintViolation 对象中。只是它没有被放入默认消息中。

我猜您目前正在使用某种网络框架来验证表单。如果是这种情况,那么覆盖验证并执行类似的操作应该非常简单(快速 hacky 版本,您应该能够通过使用外部属性文件使这变得非常整洁):



  Set<ConstraintViolation<MyForm>> violations = validator.validate(form);
  for (ConstraintViolation<MyForm> cv : violations) {
    Class<?> annoClass = cv.getConstraintDescriptor().getAnnotation().getClass();
    if (Min.class.isAssignableFrom(annoClass)) {
      String errMsg = MessageFormat.format(
        "The value of {0}.{1} was: {2} but must not be less than {3}",
        cv.getRootBeanClass(),
        cv.getPropertyPath().toString(), 
        cv.getInvalidValue(),
        cv.getConstraintDescriptor().getAttributes().get("value"));
            // Put errMsg back into the form as an error 
    }
  }
  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使 javax 验证错误消息更加具体 的相关文章

随机推荐

  • 如何知道选择范围内是否存在链接元素

    在 Javascript 中 我想确定一个元素是否A元素 存在于给定范围 文本范围内 目的是确定用户当前的选择是否包含链接 我正在构建一个富文本编辑器控件 range 对象具有 commonAncestorContainer W3C 或pa
  • sizeof(&array) 返回什么?

    接下来的问题 在 C 语言中 为什么数组的地址等于它的值 include
  • 没有日期选择器的html日期输入

    我有一个简单的日期输入
  • JasperReport:详细信息带的目的

    我认为这将作为 JasperReports 的中心主题得到相当详细的记录 但是我在任何地方都找不到这个问题的答案 细节带的目的 功能 意图是什么 它应该只是报告的中心或核心部分吗 在另一个问题中 有人向我指出 详细信息带和 JRDataso
  • 如何将 PDF 文件转换为图像

    我需要将 PDF 文件转换为images 如果 PDF 文件是多页 我只需要一张包含所有 PDF 页面的图像 有没有像 Acrobat 产品那样不收费的开源解决方案 线程 将 PDF 文件转换为 JPEG 图像 适合您的要求 一种解决方案是
  • Chrome 阻止请求

    我在 Chrome 中遇到不寻常的问题 它阻止了一些请求并返回以下内容 min php g oxp js v 2 8 11 openx www admin assets GET 失败 Dashboard php 29 解析器 经过进一步调查
  • 将 Bootstrap 更新到版本 3 - 我需要做什么?

    我是 Bootstrap 新手 使用的是旧版本 2 3 2 第 3 版已发布 如果我想使用最新版本 是否只需替换 CSS 和 Javascript 文件即可 从以下位置下载最新版本http getbootstrap com 或者将 css
  • 让返回类型为 SETOF 表加上附加字段的简单方法?

    我正在编写一个 PL pgSQL 存储过程 它将返回一组记录 每条记录包含现有表 称为 Retailer 它有两个字段 retailer key 和retailer name 的所有字段 这当然有效 CREATE FUNCTION proc
  • Typesafe forName 类加载

    我怎么打电话Class forName 当结果是泛型类型时 通常我可以使用asSubclass 但在这里 我认为做到这一点的唯一方法是种姓 当其他一切都很好地使用泛型类型时 这种方法很突出并且让我烦恼 场景是这样的 有一个 jar 有一个入
  • ODATA日期查询

    我需要返回日期为 2013 年 4 月 4 日的记录 例如 ODATA 服务中的日期字段返回为 DATE 2013 04 04T17 39 33 663 查询应该是什么样子 到目前为止 我已经看到了三种选择来做到这一点 但没有一个是直接的
  • 用于将文件从源复制到目标的 SFTP bash shell 脚本

    我创建了一个脚本来将本地文件复制到远程文件夹 该脚本在外部运行良好if健康 状况 但是当我把if条件put命令不起作用 它使用 SFTP 协议登录远程服务器 如果存在 则会显示错误 找不到放置命令 执行脚本后查看发生了什么 Connecte
  • 为什么使用 Redux Thunk [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 为什么要使用 Redux Thunk 那么我们可以做这样的事情 ReadableAPI getCategories then categories gt console log after
  • 优化的 2x2 矩阵乘法:慢速汇编与快速 SIMD

    Problem 我正在研究高性能矩阵乘法算法 例如 OpenBLAS 或 GotoBLAS 并且我正在尝试重现一些结果 本题涉及矩阵乘法算法的内部内核 具体来说 我正在研究计算C AB where A and B是 2x2 类型的矩阵dou
  • 正则表达式解析带有转义字符的字符串

    我正在从格式化字符串中读取信息 格式如下 foo bar beer 123 lol 之间的所有内容都是我想用正则表达式提取的数据 如果 后跟另一个 如 则该数据必须为 空字符串 目前我正在用这个正则表达式解析它 现在我想到数据中也可能存在
  • 如何通过 pandas 和 yahoo Finance 获取“USDJPY”(货币汇率)?

    我正在学习和使用 pandas 和 python 今天 我正在尝试制作一个汇率表 但我在获取 USDJPY 的价格时遇到了麻烦 当我得到 欧元 美元 的价格时 我的代码如下 eur web DataReader EURUSD X yahoo
  • 在 Android 上检索设备信息

    我的程序针对的是 Android 1 5 我想检索有关设备本身的系统信息 通过搜索 API 我发现很少有有用的类 到目前为止我发现的最好的是Runtime类和一些Build 系统属性 我希望能够获取设备上的内存总量 可用内存量 我不知道是否
  • Thread.sleep和happens-before之间有什么关系?

    我编写了一个简单的应用程序 它有主线程 生产者 和多个消费者线程 我想从主线程广播一条消息 这样所有的消费者线程都会收到它 然而 我有麻烦 我试图理解如何线程睡眠可能与发生之前 这是我的代码 import java util public
  • FFMPEG 不适用于 mp4 和 stdout

    我需要向 mp4 视频添加文本 如果我将结果写入文件 则一切正常 但我想从 ffmpeg 流中读取数据 我运行命令 ffmpeg i sample mp4 filter complex drawtext text Sample Text x
  • Go 中的反射类型和值

    我不太清楚这段代码的行为 func show i interface switch t i type case Person t reflect TypeOf i what t contains v reflect ValueOf i wh
  • 使 javax 验证错误消息更加具体

    抱歉 如果这个问题之前已在某处讨论过 如果有请给我链接 我还没有找到满意的答案 我一直在寻找一种方法 让 javax 验证提供的错误消息更加具体 我当前的 Min 注释消息在 ValidationMessages properties 文件