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 遷移や の使い方などを中心に、Struts2ならではの流れを実務目線で整理した手法をご紹介します。


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


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?