※ 本章は「UI制御編(実務向け UI 出し分け・エラー表示制御・再利用設計)」シリーズとなります
🔰 はじめに:UIエラー制御の重要性
入力フォームがある限り、バリデーションエラーは避けて通れないもの。
Struts2では、エラー表示用に次の2つのタグが用意されています:
タグ | 用途 | 主な表示位置の想定 |
---|---|---|
<s:fielderror> |
フィールド単位のエラー | 各入力項目のすぐ下 |
<s:actionerror> |
全体メッセージ(汎用) | 画面上部など一括表示 |
今回はこの2つのタグを、「実務のよくある失敗例 → ベストプラクティス」 という形で整理していきます。
✅ 基本の書き方と違い
▶️ <s:fielderror>
:フィールドに紐づくエラーを表示
<s:fielderror />
-
addFieldError("username", "ユーザー名は必須です");
-
結果:そのフォームの name="username" のすぐ下 にエラーが出力される
▶️ <s:actionerror>
:汎用的なエラーをまとめて表示
<s:actionerror />
-
addActionError("ログインに失敗しました");
-
結果:画面上部などに表示されるメッセージ一覧
⚠️ 実務でありがちなNGパターン
❌ すべて addActionError() で済ませる
if (username == null || username.isEmpty()) {
addActionError("ユーザー名を入力してください"); // ← UIが不親切
}
→ フィールドの下にエラーが表示されず、何の項目がNGか分かりづらい!
💡 ベストプラクティス:フィールドごとに使い分けよう
if (username == null || username.isEmpty()) {
addFieldError("username", "ユーザー名は必須です");
}
if (password == null || password.length() < 8) {
addFieldError("password", "パスワードは8文字以上で入力してください");
}
✅ JSP側
<s:textfield name="username" label="ユーザー名"/>
<s:textfield name="password" label="パスワード"/>
<s:fielderror />
🔎 ポイント
-
エラーが出たフィールドの下に 自動で該当メッセージが表示される
-
視認性・UXが大幅アップ!
🛠 実務Tips:用途に応じた使い分けパターン
タイミング | 使用タグ | 例 |
---|---|---|
入力項目のチェック | <s:fielderror> |
必須入力・形式チェックなど |
ログイン失敗など全体制御 | <s:actionerror> |
認証NG、セッション切れ、DBエラーなど |
成功メッセージ | <s:actionmessage> |
更新完了、登録成功など(おまけで紹介) |
📌 よくある質問(FAQ)
Q. を書いているのに表示されない!
-
addFieldError()
で指定した キー名がJSPのname属性と一致しているか チェック!
🔚 おわりに:UIの丁寧さが“実務力”の差
-
エラーメッセージの分かりやすさはUIの信頼感に直結
-
本当に伝えたいことをユーザーに 「一目で分かる形」 で表示することが大切です。
🧭 参考:この章の全体構成
Vol | タイトル |
---|---|
8.13 | ✅ フィールド単位のエラー表示と全体制御の違い |
8.14 | 🔁 入力フォームの共通化・再利用 |
8.15 | ⚙️ 条件付き表示制御パターン(フラグ・ステータス) |
✍️ 編集後記
この辺りは Struts2 + 実務 の“入口と奥の境目”。
「使えるタグ」から「使いこなすタグ」へのステップアップに、ぜひ!