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?

📘 Vol.9.6:【Struts2】メッセージリソース活用編 〜 i18n対応・バリデーションエラーの多言語表示で保守性UP 〜

Last updated at Posted at 2025-05-24

💡 はじめに

Struts2のバリデーション処理では、エラーメッセージの表示方法を工夫することで「保守性」「再利用性」「多言語対応」の向上が図れます。

本記事では、ActionMessages.propertiesなどのメッセージリソースファイルを使って、バリデーションエラーメッセージを外部化・i18n対応する方法を解説します!


🏗 バリデーション × プロパティファイル の基本構成

Struts2では以下のように、プロパティファイルにエラーメッセージを記述して、Java側またはXML側から呼び出します。

📁 ファイル構成例

src/
└── main/
    └── resources/
        └── com/company/bulletinboard/action/login/LoginAction.properties

📝 LoginAction.properties

errors.required.username = ユーザー名は必須入力です。
errors.invalid.username = ユーザー名の形式が不正です。

🧩 Java側:validate()での使用

@Override
public void validate() {
    if (username == null || username.isEmpty()) {
        addFieldError("username", getText("errors.required.username"));
    }
}

✅ getText() とは?

  • Struts2が提供する国際化対応のメソッド

  • メッセージプロパティファイルからキーに対応する文言を取得します

  • 言語ファイルの切り替えも可能(例:LoginAction_en.properties)


🧩 XML側:バリデーション定義での使用

<field name="username">
  <field-validator type="requiredstring">
    <message key="errors.required.username"/>
  </field-validator>
</field>
  • message タグの key 属性でメッセージリソースを参照

  • Java側と同様に外部化・i18nが可能!


🌍 多言語対応(i18n)の設定例

# LoginAction.properties(デフォルト=日本語)
errors.required.username = ユーザー名は必須入力です。

# LoginAction_en.properties(英語)
errors.required.username = Username is required.

Struts2は、リクエストヘッダーの Accept-Language を見て自動的にファイルを切り替えます。


🧑‍💻 実際のGitHub実装例(Login画面)

🔗 LoginAction.java - L57〜L75
🔗 LoginAction.properties(必須メッセージ)


📝 Tips:BaseActionなど共通クラスでも getText() は使用可能!

共通処理クラス(例:BaseAction)で getText() を使えば、エラー共通処理やログ出力にも柔軟にメッセージを適用できます!

logger.warn(getText("errors.session.timeout"));

✅ まとめ

項目 内容
🔑 メリット① エラーメッセージを一元管理でき、保守性が高まる
🌐 メリット② 多言語対応(i18n)に自然と対応可能
🔁 メリット③ 同じキーを複数のActionで再利用できる

🧭 次回予告:Vol.9.7

次回は、バリデーションエラー時のフィールド保持・初期値再表示の工夫について紹介予定です!


✨ シリーズまとめ(Vol.9.x バリデーション編)


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?