フォームを検証しようとすると、messageSource.getMessage(...)メソッドの呼び出しにNoSuchMessageExceptionsが表示されます。ここでロケール 'pl_PL'のコードの下にメッセージが見つかりません
は、検証方法である:
@Override
public Event validateUserCompany(NewUserCompanyForm userCompanyForm,MessageContext messageContext) {
MessageBuilder error = new MessageBuilder().error();
boolean eMailIsUsed=userCompanyDao.ifEmailIsUsed(userCompanyForm.getUserName());
boolean companyNameIsUsed=userCompanyDao.ifCompanyNameIsUsed(userCompanyForm.getCompanyName());
if(!eMailIsUsed && !companyNameIsUsed){
return new EventFactorySupport().success(this);
}else if(eMailIsUsed){
error.source("userName");
error.defaultText(messageSource.getMessage("message.userName.isUsed",null, LocaleContextHolder.getLocale()));
messageContext.addMessage(error.build());
}else if(companyNameIsUsed){
error.source("companyName");
error.defaultText(messageSource.getMessage("message.companyName.isUsed",null, LocaleContextHolder.getLocale()));
messageContext.addMessage(error.build());
}
return new EventFactorySupport().error(this);
}
私が手に例外がある:ここでは
org.springframework.context.NoSuchMessageException: No message found under code 'message.userName.isUsed' for locale 'pl_PL'.
はmessage.propertiesファイルの内容です:
ここmessage.userName.isUsed= Message1.
message.companyName.isUsed= Message2.
MessageSource beanです。
@Bean
public MessageSource messageSource(){
ReloadableResourceBundleMessageSource messageSource=new ReloadableResourceBundleMessageSource();
messageSource.setDefaultEncoding("UTF-8");
messageSource.setBasenames("/messages/messages");
return messageSource;
}
メッセージディレクトリは/ src/main/resourcesのパスにあります。
私がmessageSource.getMessage(...)を呼び出しているとき、テストクラスですべてうまくいくということです。私は、テストのメソッドinvokationが例外を生成しない理由を見つけることができません
@Test
public void messageSourceTest(){
Assert.assertNotNull(messageSource.getMessage("message.companyName.isUsed",null, Locale.forLanguageTag("pl_PL")));
Assert.assertNotNull(messageSource.getMessage("message.userName.isUsed",null, Locale.forLanguageTag("pl_PL")));
Assert.assertNotNull(messageSource.getMessage("message.companyName.isUsed",null, Locale.ENGLISH));
Assert.assertNotNull(messageSource.getMessage("message.userName.isUsed",null, Locale.ENGLISH));
}
が、他の部分で同じメソッドinvokation:ここ
は、テストクラスのメソッドでありますシステムのサービスのvalidateUserCompany()メソッドは、テストクラスでも正しく動作します。Spring Webflowを使用して例外を生成するメソッドを呼び出しています。
'message.properties'ファイルの内容を提供しています。あなたのコードで同時に 'messageSource.setBasenames("/messages/messages ")'があります。最後の 's'に注意してください。これはタイプミスですか? –
申し訳ありません、それは、stackoverflowの投稿のtypoです。プロジェクトの名前は正しいです。 – ariiiiiii