#おさらい
ログインをして、ユーザー一覧を表示するアプリケーションを作成し、
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の設定から、
- 詳細設定>言語>英語(アメリカ合衆国)
- その他の操作>トップに移動
##ユーザー登録画面を確認!
- ブラウザを再起動
- http://localhost:8080/signup
- ユーザー登録画面で何も入力せずにユーザー登録ボタンをクリック
- エラーメッセージが英語になりました〜〜^^
- これでブラウザの言語設定に応じて、メッセージ用プロパティファイルが切り替えられましたo(^_^)o
#バインド・バリデーションのまとめ
-
🌟データバインド
- @ModelAttribute:コントローラークラスと画面の間でフォームクラスを受け取る
- th:object属性やth:field属性:画面とフォームクラスのマッピングを行う
- @DateTimeFormat:Date型フィールドへのバインドを行う
- エラーメッセージは
src/main/resources/messages.properties
に設定
-
🌟バリデーション
- バリデーションをするには、フォームクラスに@NotBlankなどを付け、
コントローラークラスに@Validatedを付ける - @GroupSequence:バリデーションの順番を制御する
- 言語毎のメッセージプロパティファイルを用意すれば、多言語対応可能!
- バリデーションをするには、フォームクラスに@NotBlankなどを付け、