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.1:【Struts2】validate() メソッドの基本 〜 addFieldError / input遷移による入力チェックの王道パターン 〜

Last updated at Posted at 2025-05-23

👉 📘 Vol.9.0:Struts2 入力バリデーションと型変換の世界へ 〜 実務で求められる「正しい値を正しく処理する力」を徹底攻略 〜 の続編です。

✅ 本記事の目的

Struts2 の入力チェック処理の中でも最も基本的かつ汎用的な validate() メソッド。
本記事では、実務でも頻出する「ログインフォーム」「新規登録フォーム」などを例に、
このメソッドの使い方やエラーの出し方、JSPへの反映までを丁寧に解説します。


📌 1. validate() メソッドとは?

Struts2 の Action クラスに定義することで、リクエスト受信時に自動的に呼び出される入力検証用メソッドです。

@Override
public void validate() {
    if (username == null || username.isEmpty()) {
        addFieldError("username", "ユーザー名は必須です");
    }
    if (password == null || password.length() < 6) {
        addFieldError("password", "パスワードは6文字以上で入力してください");
    }
}
  • addFieldError(String fieldName, String message)
    → フィールドごとのエラーメッセージを設定

  • addActionError(String message)
    → 全体メッセージ(システム的な警告や一括エラーなど)に使用


📌 2. エラー時の挙動:input に戻る

バリデーションでエラーが検出されると、自動的に input リザルトへ遷移します。

<action name="login" class="com.example.LoginAction" method="execute">
  <result name="success">/userPortal.jsp</result>
  <result name="input">/login.jsp</result>
</action>

この設計により、「バリデーション失敗 → 元のフォームへ戻って再入力」という自然な導線が可能になります。


📌 3. JSP側でのエラーメッセージ表示(<s:fielderror>

バリデーションエラーを画面に表示するには、以下のように s:fielderror を使います:

<s:form action="login" method="post">
  <s:fielderror />
  <s:textfield name="username" label="ユーザー名" />
  <s:password name="password" label="パスワード" />
  <s:submit value="ログイン" />
</s:form>
  • s:fielderror をフォームの上部に配置することで、エラーが一覧表示されます。

  • フィールド単位で のように制御も可能。


💡 実務での使用例

✅ ログインフォームの入力チェック

  • ユーザー名:空でない

  • パスワード:6文字以上

@Override
public void validate() {
    if (username == null || username.trim().isEmpty()) {
        addFieldError("username", "ユーザー名を入力してください");
    }
    if (password == null || password.length() < 6) {
        addFieldError("password", "パスワードは6文字以上必要です");
    }
}

🧭 実務Tips:バリデーション失敗でも入力値を保持するには?

Struts2では、失敗してinputに戻っても、フィールドに設定された値が自動的に保持されるため、再入力の手間が省けます。これはOGNLとプロパティ設定の恩恵です。


🔚 まとめ

項目 説明
validate() Actionクラス内で定義する入力検証用メソッド
addFieldError フィールドごとのエラー登録
input 遷移 バリデーション失敗時の戻り先
JSP表示 <s:fielderror> タグで一括表示が可能

🔜 次回予告

📘 Vol.9.2:Struts2実装編として、validate() メソッドによる入力チェック、および input 遷移や <s:fielderror> の使い方などを中心に、Struts2ならではの流れを実務目線で整理した手法をご紹介します。


📚 関連シリーズの復習(おすすめ)


🔎 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?