【问题标题】:Internationalization of java bean validation with ValidationMessages.properties使用 ValidationMessages.properties 实现 java bean 验证的国际化
【发布时间】:2014-11-20 08:32:23
【问题描述】:

如何国际化 java bean 验证?

在国际化之前,我有(类似于)以下验证错误消息:

email is not a valid email address (was some-nonexistant-user[at]invalid.email)

并根据:https://docs.oracle.com/javaee/6/tutorial/doc/gkahi.html 可以创建一个 ValidationMessages.properties 文件来国际化文本

例如,如果我添加内容(出于演示目的将其保留为英文,尽管这应该是另一种语言)

org.hibernate.validator.constraints.Email.message=is invalid email format

现在这会产生以下验证错误:

email is invalid email format (was some-nonexistant-user[at]invalid.email)

所以这似乎只能让我控制一小部分文本,但我如何自定义 was 部分?并且可以完全控制整个文本?类似:

{property} is invalid (data = {value})

这会给我

的输出

email is invalid (data = some-nonexistant-user[at]invalid.email)

【问题讨论】:

  • 我以前做过,恐怕你需要创建一个包装好的MessageInterpolator

标签: java validation internationalization hibernate-validator


【解决方案1】:

如果您不能通过本地化的属性文件做您想做的事情,您可能需要创建自己的 MessageInterpolator。

请参阅第 4.3.2 节http://beanvalidation.org/1.0/spec/#validationapi-message

【讨论】:

  • 也就是说,如果不借助您自己的 MessageInterpolator,就无法进一步自定义消息?
  • 是的,根据我的阅读,这似乎是这样。基本上有一个默认的插值器,它只为你做了这么多。任何更复杂的事情都取决于你.. 但也许有人把一些开源的东西放在那里供你使用。我没有检查那个。您可以做的另一件事是将 ContraintViolation 对象与失败的值相匹配,并向消息中添加一些内容。换句话说,对消息进行后处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多