現在、Rest APIを開発しております。
Rst APIにてリクエスト(GET,POST その他)を受信した際、
各パラメータが正しいかを検証する必要があり、
この処理に javax.validation を使用しています。
(実装クラスは hibernate-validator)
まずはGETリクエストを受信した際のエラーチェックを実装しているのですが、ここで詰まったので
質問をさせて頂きます。
-
- 実現したいこと
Rest API の GETリクエストを受信した際、パラメータの状態を検査して、
異常があった場合は Status 400 を返却し、そのメッセージにクライアントの言語ごとのメッセージを設定したい。
- 実施したこと
以下の実装をしました。
・プロパティファイル
properties
1# application.properties 2spring.messages.basename=languages/messages 3spring.messages.cache-seconds=-1 4spring.messages.encoding=UTF-8
properties
1# messages_ja.properties 2javax.validation.constraints.AssertFalse.message=Falseでなければなりません。 3javax.validation.constraints.AssertTrue.message=Trueでなければなりません。 4javax.validation.constraints.DecimalMax.message={value}以下でなければなりません。 5# 以下続くが省略
・Configプログラム
Java
1import org.springframework.beans.factory.annotation.Autowired; 2import org.springframework.context.MessageSource; 3import org.springframework.context.annotation.Bean; 4import org.springframework.context.annotation.Configuration; 5import org.springframework.validation.Validator; 6import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; 7import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 8 9@Configuration 10public class MessageConfig implements WebMvcConfigurer { 11 @Autowired 12 private MessageSource messageSource; 13 14 @Bean 15 public LocalValidatorFactoryBean validator() { 16 LocalValidatorFactoryBean localValidatorFactoryBean = new LocalValidatorFactoryBean(); 17 localValidatorFactoryBean.setValidationMessageSource(messageSource); 18 return localValidatorFactoryBean; 19 } 20 21 @Override 22 public Validator getValidator() { 23 return validator(); 24 } 25} 26
・コントローラー
Java
1import 省略します 2 3 4@Scope("request") 5@RestController 6public class UsersControl { 7 8 @RequestMapping(value = "/v1/test", method = RequestMethod.GET) 9 public void test(@NotNull @Valid @RequestParam("token") String token, Locale locale) { 10 11 System.out.println(token); 12 13 } 14 15}
- 現状
Status 400 は返却されるのですが、メッセージが英語のままです。
これをプロパティファイルを使って多言語対応したいです。
どなたかご教示いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。