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.8.13:【Struts2】フィールド単位のエラーメッセージ制御 〜 `<s:fielderror>` / `<s:actionerror>` 徹底使い分け 〜

Last updated at Posted at 2025-05-23

※ 本章は「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 + 実務 の“入口と奥の境目”。
「使えるタグ」から「使いこなすタグ」へのステップアップに、ぜひ!

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?