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 を見て自動的にファイルを切り替えます。


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

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

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

✅ まとめ

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

🧭 次回予告:Vol.9.7

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


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


🔎 Vol.9系で扱うトピック

テーマ 内容の一部紹介
9.1 validate()メソッドの基本 Struts2標準の入力チェック基礎
9.2 @Validations アノテーション活用 宣言的バリデーション設計
9.3 validation.xml 外部定義でのバリデーション 大規模PJでのメンテナンス性
9.4 conversion.properties と型変換 日付/数値/Enum変換の実務対応
9.5 入力エラー時のメッセージ制御 addFieldError() / メッセージキー運用
9.6 バリデーション共通化 共通部品によるDRY設計
9.7 サーバサイドとクライアントサイドの協調 jQueryやHTML5との併用戦略
9.8 実務シナリオでのバリデーション総仕上げ 会員登録/投稿処理などの実例適用
9.9 バリデーション処理の単体テスト編 validate()/独自バリデータ/input遷移の検証を網羅的に
9.10 エラー表示のUIデザイン編 視認性・操作性を高める実践テクニック
9.11 Ajax×バリデーション連携編 クライアント×サーバーで UX&保守性を両立するハイブリッド構成

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?