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