質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

2333閲覧

Sprng Boot にてGETリクエストを受信した際のバリデーションエラーメッセージを多言語対応する方法

yamashita_yuich

総合スコア316

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2018/07/14 06:22

現在、Rest APIを開発しております。
Rst APIにてリクエスト(GET,POST その他)を受信した際、
各パラメータが正しいかを検証する必要があり、
この処理に javax.validation を使用しています。
(実装クラスは hibernate-validator)

まずはGETリクエストを受信した際のエラーチェックを実装しているのですが、ここで詰まったので
質問をさせて頂きます。

    1. 実現したいこと

Rest API の GETリクエストを受信した際、パラメータの状態を検査して、
異常があった場合は Status 400 を返却し、そのメッセージにクライアントの言語ごとのメッセージを設定したい。

  1. 実施したこと

以下の実装をしました。

・プロパティファイル

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}
  1. 現状

Status 400 は返却されるのですが、メッセージが英語のままです。
これをプロパティファイルを使って多言語対応したいです。

どなたかご教示いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

投稿2018/07/14 07:02

euledge

総合スコア2404

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問