当前位置: 首页 > 知识库问答 >
问题:

Spring 3 验证:在 errorArgs 中使用 messages.property entry ?

宋望
2023-03-14

我要找的东西很容易解释:我有一个必须同时支持意大利语和英语的表格。假设我有一个“名字”输入文本字段。表单标签将为:

  • for EN:"名字"
  • 对于IT:“Nome”

我想要的是这样的验证错误消息

    < li >对于EN:"名字字段是必填的" < li >因为它:“il campo Nome è richiesto”

请注意,我在错误消息中引用了字段名。

我有messages_en。属性,行:

errors.empty.field = the {0} field is required
registration.form.firstname = First Name

当然还有messages_it。属性,行:

errors.empty.field = il campo {0} è richiesto
registration.form.firstname = Nome

现在,在我的自定义验证器类中

ValidationUtils.rejectIfEmpty(errors, "firstname", "errors.empty.field", new Object[]{"registration.form.firstname"}, "the First Name is required");

这不能正常工作。输出是“registration.form.username”字符串。我想在运行时使用正确的语言环境注入字段名称。有没有办法这样做?

共有1个答案

籍辰沛
2023-03-14

这是一种方法,应该有更好的方法:

MessageSource注入控制器或验证器:

@Autowired MessageSource messageSource

在控制器的< code>@RequestMapping方法中,将Locale作为一个参数,Spring将为您填充它。

@RequestMapping(...)
public String myMethod(..., Locale locale){
   ValidationUtils.rejectIfEmpty(errors, "firstname", "errors.empty.field", new Object[]{messageSource.getMessage("registration.form.firstname", new Object[]{}, locale)}, "the First Name is required");
....
}

更新:

您可以使用 LocaleContextHolder 在验证器中获取 Locale 的句柄

 类似资料:
  • 我的验证器类 当我没有选择任何选项就提交表单时, 无法将类型java.lang.String的属性值转换为属性类别所需的类型com.main.java.category;嵌套异常为java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为属性类别所需的类型[com.main.java.category]:找不到匹配的编辑器或转换策略 这

  • 我将在Spring中使用DDD构建一个新应用程序。我将有一个REST适配器、一个JPA适配器和我的域模型。 我的问题是在哪里进行现场验证?假设我有一个REST方法来下订单,我应该在哪里验证请求中的订单数量是否大于0?在REST适配器的DTO中?或者在我的域实体中,因为验证应该是业务逻辑的一部分? 如果我在REST请求的DTO中进行验证,我就可以将验证检查添加到DTO的字段中,并在我的REST控制器

  • 由于这个问题,我想我理解了验证是如何工作的。 至于JPA,这里我们有一个名为JSR-303的规范,解释了Bean验证应该如何工作,然后我们也使用了常用的Hibernate Validator或Apache BVal等实现。 我正在努力在我的代码的某些部分使用。我没有使用,因为我不需要组验证。 您可以在此处找到演示项目的示例 在PropertyExample类中,您可以看到我标记了我的类以进行bea

  • 我正在用以下组件构建自己的证书链: 根证书是自签名证书,中间证书由根证书和用户由中间证书签名。 现在我想验证一个用户证书是否有其根证书的锚。 具有 验证是可以的。在下一步中,我将使用 验证结果显示 什么是错的?

  • 首先,我是Vaadin7的新手。当我发现BeanFieldGroup.class时,我正在尝试一些vaadin演示。正如我所看到的,这个类将一个字段绑定到一个bean属性。在bean中,使用验证约束注释对属性进行注释(JSR303)。在本例中,我的pom.xml包含hibernate验证器依赖项: 我创建了validationmessage.properties文件,并在其中放了一些消息(带有匈牙

  • 我正在尝试使用自定义Bean验证来验证应该大于零的数值,但问题是使用如下单个自定义验证器来验证任何数值:整数、浮点数、双......: 整数int; @PositiveNumber双倍双; 这可能吗?

  • 问题内容: 我正在尝试连接到HTTPS URL,但是我需要使用客户端身份验证以及第三方软件在我的系统上放置的证书。 我丝毫不知道如何找到或使用它,我所要做的只是C#示例代码,这与我为此找到的所有Java答案都大不相同。(例如,KeyStore显然需要某种密码吗?) 这是我拥有的C#示例代码 然后,它仅遍历WS2_store_Certs CertificateCollection并一路检查它们。再进

  • 我明白验证在应用程序的几个层中都是必需的。但是,如果要在所有层中实施的验证都是相同的(大多数情况下都是这样),那么使用一个公共的验证框架是有意义的。这是Hibernate验证器的目标之一。 那么,哪条路走得更好呢?