Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bean验证&x2B;资源包想法?_Java_Jpa_Validation_Bean Validation_Resourcebundle - Fatal编程技术网

Java Bean验证&x2B;资源包想法?

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

以下是我希望能够在我的JPA实体中使用bean验证所做的:

  • 我想做的不是
    @NotNull
    ,而是
    @NotNull(message=“keyInMyResourceBundleFile”)
  • 我还想参数化resourceBundle,但我不知道它的语法,因为在我看来message属性只包含一个字符串
  • 参数本身可以是i18n-ed。例如,假设resourcebundle参数有一个param属性,在英语中,
    @NotNull(message=“missing.value”,params={“credit card”})字符串creditCard它将显示如下内容:“缺少字段信用卡的所需值”。在印度尼西亚,它将类似于“Nilai harus di isi untukKartu Kredit。在这个例子中,我不能硬编码“信用卡”,因为在印度尼西亚,它是“Kartu Kredit”
  • 在日志文件或UI上显示资源包中定义的错误消息。我不知道怎么做,我应该捕获
    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。希望这会很好。祝我好运!