0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Java・SpringBoot・Thymeleaf】ブラウザ言語設定でエラーメッセージの言語を変更(SpringBootアプリケーション実践編8)

Posted at

#おさらい
ログインをして、ユーザー一覧を表示するアプリケーションを作成し、
Springでの開発について勉強していきます🌟
前回はユーザー登録画面で、まずは必須入力チェックを行い、次に中身のチェックを行うという、エラーメッセージを順番に実行する実装をしました〜
今回はWebブラウザの言語設定に応じて、メッセージプロパティファイルを切り替え、表示メッセージを英語に切り替えられるようにします

前回の記事🌟
【Java・SpringBoot・Thymeleaf】バリデーションチェックの順番を設定(SpringBootアプリケーション実践編7)

構成は以下のようになっています

Project Root
└─src
    └─ main
        └─ java  
            └─ com.example.demo
                └─ login
                    └─ controller                ...コントローラクラス用パッケージ
                └─ domain                        ...ビジネスロジック用パッケージ
                    └─ model                     ...Modelクラス用パッケージ
                        └─ LoginForm.java
                        └─ SignupForm.java
                        └─ ValidGroup1.java
                        └─ ValidGroup2.java
                        └─ ValidGroup3.java
                        └─ GroupOrder.java
        └─ resouces
            └─ static                            ...css,js用フォルダ
            └─ templates
                └─ login
                    └─ login.html
                    └─ signup.html
            └─ messages.properties
            └─ messages_en.properties

#英語用のメッセージファイルを作成

  • messages_en.propertiesを作成します
src/main/resources/messages_en.properties
# =======================================
# データバインドエラーメッセージ
# =======================================

#typeMismatch.[ModelAttribute名].[プロパティ名]
typeMismatch.signupForm.age=Please enter a numeric value
typeMismatch.signupForm.birthday=Please enter in yyyy / MM / dd format

# =================================================
# バリデーションエラーメッセージ
# =================================================

#ユーザーID
signupForm.userId=UserID
NotBlank.signupForm.userId={0} is required 
Email.signupForm.userId=Please enter {0} in e-mail address format

#パスワード
signupForm.password=Password
NotBlank.signupForm.password={0} is required 
Length.signupForm.password=Please input {0} with more than {2} digits, {1} digits or fewer digits
Pattern.signupForm.password=Please enter {0} with half-width alphanumeric characters

#ユーザー名
signupForm.userName=UserName
NotBlank.signupForm.userName={0} is required 

#誕生日
signupForm.birthday=Birthday
NotNull.signupForm.birthday={0} is required 

#年齢
signupForm.age=Age
Min.signupForm.age={0} must be at least {1}
Max.signupForm.age={0} must be less than {1}

#結婚
AssertFalse.signupForm.marriage=You can only register if false

##ブラウザの言語設定を変更

  • ブラウザの言語設定で英語の優先順位を一番にする
  • Googleの設定から、
  • 詳細設定>言語>英語(アメリカ合衆国)
    • その他の操作>トップに移動

google.png

##ユーザー登録画面を確認!

  • ブラウザを再起動
  • http://localhost:8080/signup
  • ユーザー登録画面で何も入力せずにユーザー登録ボタンをクリック
  • エラーメッセージが英語になりました〜〜^^
  • これでブラウザの言語設定に応じて、メッセージ用プロパティファイルが切り替えられましたo(^_^)o

eng_err.png

#バインド・バリデーションのまとめ

  • 🌟データバインド
    • @ModelAttribute:コントローラークラスと画面の間でフォームクラスを受け取る
    • th:object属性やth:field属性:画面とフォームクラスのマッピングを行う
    • @DateTimeFormat:Date型フィールドへのバインドを行う
    • エラーメッセージはsrc/main/resources/messages.propertiesに設定
  • 🌟バリデーション
    • バリデーションをするには、フォームクラスに@NotBlankなどを付け、
      コントローラークラスに@Validatedを付ける
    • @GroupSequence:バリデーションの順番を制御する
    • 言語毎のメッセージプロパティファイルを用意すれば、多言語対応可能!
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?