3

Spring (4.0.5) と Hibernate Validator (5.1.2.Final) を使用しています。

私はすでに .properties ファイルを介してエラーメッセージを処理していますが、それは i18n についても機能します

  • 現時点では、スタンドアロンおよびテスト(JUnit) 環境にあります。物事を単純にするために、まだ Web 環境を含めたくありません。

私は次のものを持っています:

ValidationMessages_es_PE.propertiesファイルの場合(スペイン語)

person.salary.digits=Dato invalido '${validatedValue}', máximo tamaño no decimal permitido es {integer}, máximo tamaño decimal permitido es {fraction}

インフラについて

@Configuration
public class ValidatorConfiguration {

    @Bean
    public ResourceBundleMessageSource resourceBundleMessageSource(){
        ResourceBundleMessageSource resourceBundleMessageSource = new ResourceBundleMessageSource();
        resourceBundleMessageSource.setDefaultEncoding("UTF-8");
        resourceBundleMessageSource.setBasenames("com.manuel.jordan.validation.messages.ValidationMessages");
        return resourceBundleMessageSource;
    }

    @Bean
    public LocalValidatorFactoryBean localValidatorFactoryBean(){

LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean();
        localValidatorFactoryBean.setValidationMessageSource(resourceBundleMessageSource());

        MessageSourceResourceBundleLocator messageSourceResourceBundleLocator = new MessageSourceResourceBundleLocator(resourceBundleMessageSource()); 
        ResourceBundleMessageInterpolator resourceBundleMessageInterpolator = new ResourceBundleMessageInterpolator(messageSourceResourceBundleLocator);
        localValidatorFactoryBean.setMessageInterpolator(resourceBundleMessageInterpolator);

        return localValidatorFactoryBean;
    }


}

私が持っていることを観察しますsetDefaultEncoding("UTF-8")

テストクラス

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=ValidatorConfiguration.class)
public class InvalidPersonValidation03Test {

    private static final Logger logger = LoggerFactory.getLogger(InvalidPersonValidation03Test.class);

    @Autowired
    private LocalValidatorFactoryBean validator;

    public InvalidPersonValidation03Test(){
        LocaleContextHolder.setLocale(new Locale("es","PE"));
    }

    @Test
    public void testInvalidNullId(){
    ...

出力の一部は次のとおりです

- >>>testInvalidFractionSalary
- ConstraintViolationImpl{interpolatedMessage='Dato invalido '1578.100', m�ximo tama�o no decimal permitido es 4, m�ximo tama�o decimal permitido es 2', propertyPath=salary, rootBeanClass=class com.manuel.jordan.domain.PersonValidation03, messageTemplate='{person.salary.digits}'}
- ConstraintViolationImpl{interpolatedMessage='Dato invalido '1578.100', m�ximo tama�o no decimal permitido es 4, m�ximo tama�o decimal permitido es 2', propertyPath=salary, rootBeanClass=class com.manuel.jordan.domain.PersonValidation03, messageTemplate='{person.salary.digits}'}

文字ñáが期待どおりに表示されていない

私のIDEはすでに持っています

Preferences -> Workspace -> Text file encodingUTF-8

不足している追加の構成が必要ですか?

4

2 に答える 2

0

コミュニティのために

私はこの投稿を読み ましたEclipseでのJavaプロパティutf8エンコーディングの問題

したがって、この簡単で非常に便利なツール ResourceBundle Editorの使用を検討してください。

Eclipse および Spring Tool Suite で動作します

問題が解決しました

于 2014-09-01T14:07:38.583 に答える