Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

SpringBoot:バリデーションエラーメッセージの共通化

これから、ValidationMessages_ja.properties のエラーメッセージを共通化する手順を書いていきます。今回は例として、共通化前のプロパティファイルの内容が、次のようになっていると仮定します。

NotEmpty.customer.lastName = 姓は必須入力です。
NotEmpty.customer.firstName = 名は必須入力です。
Max.customer.lastName = 姓は {max} 文字以内で入力してください。
Max.customer.firstName = 名は {max} 文字以内で入力してください。

この書き方だと、次の表現が重複しています。

  • …は必須入力です。
  • …は {max} 文字以内で入力してください。

手順1. ValidationMessages_ja.properties の変更

重複する表現を切り出して共通化します。修正後の内容は次の通りです。

lastName = 姓
firstName = 名
NotEmpty = は必須入力です。
Max = は {max} 文字以内で入力してください。

手順2. アノテーションの属性変更

アノテーション(Bean バリデーション:@NotEmpty, @Size)の message 属性に、新しいメッセージキーを設定します。

public class Customer {

    @NotEmpty(message="{lastName}{NotEmpty}")
    @Size(max=50, message="{lastName}{Max}")
    private String lastName;

    @NotEmpty(message="{firstName}{NotEmpty}")
    @Size(max=50, message="{firstName}{Max}")
    private String firstName;

    // 省略・・・
}

message 属性は「{キー名称}{キー名称}」といったように、ValidationMessages_ja.properties に書いたキーを繋げて書くことができます。

まとめ

これで、重複を排除しつつ、次のエラーメッセージが取得できます。

必須入力エラー(@NotEmpty)

姓は必須入力です。
名は必須入力です。

サイズエラー(@Size)

姓は 50 文字以内で入力してください。
名は 50 文字以内で入力してください。