Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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
hibernate验证程序+;JSF2.0:UTF-8中的ValidationMessages.properties_Utf 8_Jsf 2_Hibernate Validator - Fatal编程技术网

hibernate验证程序+;JSF2.0:UTF-8中的ValidationMessages.properties

hibernate验证程序+;JSF2.0:UTF-8中的ValidationMessages.properties,utf-8,jsf-2,hibernate-validator,Utf 8,Jsf 2,Hibernate Validator,我在UTF-8中显示Hibernate Validator的自定义验证消息时遇到问题 对于常见的jsf消息,我遵循以下建议:-我创建了类文本并在faces-config.xml中使用它。这是正常工作 但这种方法不适用于ValidationMessages;UTF-8中不显示特殊字符 有人能给我一些建议吗?非常感谢我用同样的方法解决了这个问题。Hibernate验证器的配置文件位于META-INF/validation.xml中 validation.xml的示例 <validation-c

我在UTF-8中显示Hibernate Validator的自定义验证消息时遇到问题

对于常见的jsf消息,我遵循以下建议:-我创建了类文本并在faces-config.xml中使用它。这是正常工作

但这种方法不适用于ValidationMessages;UTF-8中不显示特殊字符


有人能给我一些建议吗?非常感谢

我用同样的方法解决了这个问题。Hibernate验证器的配置文件位于META-INF/validation.xml中

validation.xml的示例

<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
    <message-interpolator>com.mycompany.validation.utf8.UTF8ResourceBundleMessageInterpolator</message-interpolator>
</validation-config>
UTF8ResourceBundleLocator的实现(通过小补丁克隆平台ResourceBundleLocator类)


其中,UTF8Control类是我以相同方式解决的中的类。Hibernate验证器的配置文件位于META-INF/validation.xml中

validation.xml的示例

<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration">
    <message-interpolator>com.mycompany.validation.utf8.UTF8ResourceBundleMessageInterpolator</message-interpolator>
</validation-config>
UTF8ResourceBundleLocator的实现(通过小补丁克隆平台ResourceBundleLocator类)


其中UTF8Control类是来自的类如果使用与中相同的资源束,则可以执行以下操作:

根据该答案修改ResourceBundle,这样您就有了一个额外的构造函数,该构造函数采用区域设置:

public I18NUtf8RessourceBundle(Locale locale) {
    setParent(ResourceBundle.getBundle(BUNDLE_NAME, 
            locale, UTF8_CONTROL));
}
然后在默认包中创建类
ValidationMessages

public class ValidationMessages extends I18NUtf8RessourceBundle{
   public ValidationMessages() {
        super(null);
    }
}
然后使用特定的区域设置(en、de等)创建相同的类:

对所有语言执行相同的操作,并每次传递不同的语言环境:


有了它,您甚至可以使用与普通翻译相同的验证消息文件

如果使用与中相同的资源包,则可以执行以下操作:

根据该答案修改ResourceBundle,这样您就有了一个额外的构造函数,该构造函数采用区域设置:

public I18NUtf8RessourceBundle(Locale locale) {
    setParent(ResourceBundle.getBundle(BUNDLE_NAME, 
            locale, UTF8_CONTROL));
}
然后在默认包中创建类
ValidationMessages

public class ValidationMessages extends I18NUtf8RessourceBundle{
   public ValidationMessages() {
        super(null);
    }
}
然后使用特定的区域设置(en、de等)创建相同的类:

对所有语言执行相同的操作,并每次传递不同的语言环境:


有了它,您甚至可以使用与普通翻译相同的验证消息文件

实际上,我用与jsf消息相同的解决方案解决了这个问题。可以使用具有“ValidationMessages”捆绑包名称的同一类,并将其作为新元素添加到faces-config.xml中。可以使用具有“ValidationMessages”捆绑包名称的同一类,并将其作为新元素添加到faces-config.xml中。