Java Bean验证&x2B;资源包想法?
以下是我希望能够在我的JPA实体中使用bean验证所做的:Java Bean验证&x2B;资源包想法?,java,jpa,validation,bean-validation,resourcebundle,Java,Jpa,Validation,Bean Validation,Resourcebundle,以下是我希望能够在我的JPA实体中使用bean验证所做的: 我想做的不是@NotNull,而是@NotNull(message=“keyInMyResourceBundleFile”) 我还想参数化resourceBundle,但我不知道它的语法,因为在我看来message属性只包含一个字符串 参数本身可以是i18n-ed。例如,假设resourcebundle参数有一个param属性,在英语中,@NotNull(message=“missing.value”,params={“credit c
@NotNull
,而是@NotNull(message=“keyInMyResourceBundleFile”)
@NotNull(message=“missing.value”,params={“credit card”})字符串creditCard代码>它将显示如下内容:“缺少字段信用卡的所需值”。在印度尼西亚,它将类似于“Nilai harus di isi untukKartu Kredit。在这个例子中,我不能硬编码“信用卡”,因为在印度尼西亚,它是“Kartu Kredit”
ConstraintViolationException
,获取消息,然后用我自己的代码处理资源包吗谢谢大家! 关于1+2的问题
@NotNull(message="{keyInMyResourceBundleFile}")
花括号表示参数替换
关于第3条
不知道你在追求什么。@NotNull没有params属性。我想你会的
@NotNull(message=“{missing.credit.card}”)
如果你把它放在另一个属性上,你会调用键{missing.name}
关于4
ConstraintViolationException包含一组*ConstraintViolation*s。每个ConstraintViolation都包含插入的消息以及消息模板。如果你想记录它,就去做…你能帮我弄清楚“插值”是什么意思吗?它是否与message属性值中的花括号有关?关于no 3是这样的:在我的resourcebundle属性文件中,我有一个简单的条目:empty.value=字段{0}的值是必需的。我想重用这个“{empty.value}”,并传递将替换{0}的参数。例如,“需要字段用户Id的值”,或“需要字段密码的值”。其目的是参数化该值,并以某种方式传递该值。插值意味着大括号{}代表消息包中的一个键。因此,在@NotNull(message=“{keyInMyResourceBundleFile}”)的情况下,在属性文件中需要一行“keyInMyResourceBundleFile=MyMessage”。关于3,Bean验证不知道已验证的字段名。在使用JSF的情况下,您可以使用{0},这是一个特殊的标记,它将被替换为字段名。这是可行的,因为JSF将Bean验证与自定义MessageInterpolator集成在一起。我越来越清楚了。希望尝试使用BV+消息键的JPA实体,并使用JSFbean中的实体来存储状态,并重用BV。希望这会很好。祝我好运!