1

这是我希望能够在我的 JPA 实体中对 bean 验证进行的操作:

  1. 而不是@NotNull,我想做@NotNull(message="keyInMyResourceBundleFile")
  2. 我还想参数化resourceBundle,我不知道它的语法,因为在我看来消息属性只包含一个字符串。
  3. 参数本身可以是 i18n-ed。例如,假设 resourcebundle 参数有一个 param 属性,在英文中,@NotNull(message="missing.value", params={"credit card"}) String creditCard;它将显示如下内容:“Missing required value for field credit card。在印度尼西亚,它将类似于“Nilai harus di isi untuk Kartu Kredit . 在此示例中,我无法对“信用卡”进行硬编码,因为在印度尼西亚,它是“Kartu Kredit”
  4. 在日志文件或 UI 上显示资源包中定义的错误消息。我不确定该怎么做,我应该ConstraintViolationException通过自己的代码捕获、获取消息并处理资源包吗?

请分享您对此的看法?

谢谢 !

4

1 回答 1

3

关于 1 + 2

@NotNull(message="{keyInMyResourceBundleFile}")

大括号是参数替换的指示符

关于3

不知道你在追求什么。@NotNull没有params属性。我想你会做

@NotNull(message="{missing.credit.card}")

如果你把它放在另一个属性上,你会调用键{missing.name}

关于4

ConstraintViolationException包含一组 *ConstraintViolation*s 。每个ConstraintViolation都包含内插消息以及消息模板。如果您想记录它,请执行...

于 2011-03-23T14:30:26.223 回答