👉 📘 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.8.18〜8.20 総まとめ:Struts2 テンプレート最適化・UI共通化設計編(共通レイアウト構築と動的UI出し分け)
→ 表示の基礎とUI共通化の構成がまだの方はこちらから! -
📘 Vol.9.0: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&保守性を両立するハイブリッド構成 |