本記事は、Struts2でJSPを書く際に頻出するタグの基本を網羅する
📘「Vol.8.0〜8.7:Struts2 タグライブラリ入門編(基本操作・最低限の知識)」 シリーズの一部です。
✅ はじめに
Struts2では、ユーザー入力に対するバリデーションがとても重要です。
ただし、バリデーション結果をUI側(JSP)にどう表示するかも、同じくらい大切なポイントです。
本記事では、バリデーションUIに欠かせない以下の3タグを使いこなすための知識と実例を徹底解説します!
-
<s:fielderror>
:項目単位のエラー表示 -
<s:actionerror>
:画面全体に関するエラー -
<s:actionmessage>
:成功メッセージなどの通知用
🔸 1. <s:fielderror>
〜 入力フォームのエラー表示に必須!
<s:fielderror>
は、特定のフォーム項目に関連するエラーを表示するためのタグです。
<s:form action="register">
<s:textfield name="username" label="ユーザー名" />
<s:fielderror fieldName="username" />
<s:submit value="登録" />
</s:form>
上記では、Actionクラス内で addFieldError("username", "ユーザー名は必須です")
のように指定されたメッセージが表示されます。
🔸 2. 〜 システムや処理全体のエラーに!
<s:actionerror>
は、画面全体に関わるエラー(例:ログイン失敗、DB接続エラーなど)を表示したい場合に使います。
<s:actionerror />
addActionError("ユーザー名またはパスワードが違います。");
✅ フォーム入力ではなく、処理上の失敗に使い分けましょう!
🔸 3. 〜 成功メッセージの表示に最適!
<s:actionmessage>
は、成功時や通知のメッセージを表示するためのタグです。
例えば、更新完了後の通知などに使えます。
<s:actionmessage />
addActionMessage("ユーザー情報を更新しました。");
🧩 4. ActionSupportでのエラー登録方法
Struts2の ActionSupport
クラスにある以下のメソッドを使うことで、JSPにメッセージを渡せます。
メソッド名 | 対応するタグ | 用途 |
---|---|---|
addFieldError() |
<s:fielderror> |
項目単位のバリデーション失敗 |
addActionError() |
<s:actionerror> |
全体的なエラー |
addActionMessage() |
<s:actionmessage> |
成功通知や注意喚起メッセージ |
💡 5. 実務Tips:複数メッセージとカスタマイズ
✔ 複数エラーがある場合は自動的にリスト形式で表示されます!
addFieldError("username", "ユーザー名が短すぎます");
addFieldError("username", "特殊文字は使えません");
→ 2つとも <s:fielderror>
に表示されます。
✔ カスタムデザインもOK
以下のように <s:iterator>
と組み合わせれば、HTMLやCSSで装飾できます。
<ul class="error-list">
<s:iterator value="fieldErrors['username']">
<li><s:property /></li>
</s:iterator>
</ul>
🔍 補足:Struts2の ActionSupport クラスとは?
本記事では、バリデーション結果の表示に関するタグ(<s:fielderror>
/ <s:actionerror>
/ <s:actionmessage>
)を紹介しましたが、実際にこれらのメッセージをActionクラスから画面に渡すために、addFieldError()
や addActionMessage()
などのメソッドを使いました。
これらの便利なメソッドがすぐに使えるようになっているのは、Struts2の ActionSupport
クラスがあらかじめ用意してくれているからです。
Struts2の多くのアクションでは、この ActionSupport
を継承することで、エラーメッセージの追加や国際化対応など、さまざまな機能をすぐに使えるようになっています。
public class SampleAction extends ActionSupport {
// 例えばこんな風にメッセージを追加できるのは…
addActionMessage("登録が完了しました");
}
✅ ActionSupport の主な役割
Struts2の ActionSupport
クラスは、以下のような機能を備えたAction開発の基本クラスです。
-
addFieldError() / addActionError() / addActionMessage() などのメッセージ系メソッドの提供
-
多言語対応に便利な getText() メソッドの提供
-
Action, Validateable, ValidationAware など、複数のインタフェースを実装済み
Struts2ではActionクラスを ActionSupport
を継承して作成するのが一般的です。特にバリデーションやメッセージ表示の実装において、その恩恵は非常に大きいです。
🔍 更に補足:
本プロジェクトでは、共通処理を集約した BaseAction
クラスが ActionSupport
を継承しており、各アクションは BaseAction
を継承しています。
このように、Struts2の基本仕様とプロジェクト固有の構成を理解しておくことで、柔軟かつ効率的な開発が可能になります。
🔚 まとめ
Struts2のタグライブラリは、ただの見た目補助ではなく、アプリケーションのUIと処理の橋渡しをしてくれる強力なツールです。
-
<s:fielderror>
でフォームのエラーをピンポイントに -
<s:actionerror>
で全体のエラーをまとめて通知 -
<s:actionmessage>
で成功メッセージや注意喚起をしっかり表示
この3タグを覚えるだけで、バリデーションUIの信頼性とユーザー体験が大きく向上します!
📚 関連記事(Vol.8シリーズ)
-
📘 Vol.8.1:【Struts2】タグライブラリの全体像と種類を把握する 〜JSP開発で使えるタグ一覧と役割まとめ〜
-
📘 Vol.8.2:【Struts2】JSPタグライブラリ実践テンプレート集 〜現場で即使える!フォーム・URL・セッション活用まとめ〜
-
📘 Vol.8.4:【Struts2】「s:action」「s:token」タグ徹底解説!〜アクション呼び出しと二重送信防止の最前線〜
-
📘 Vol.8.5:【Struts2】条件分岐タグ(s:if / s:else)徹底解説! 〜表示制御と実務応用の決定版〜
-
📘 Vol.8.6:【Struts2】画面部品の共通化! s:include / s:component 徹底解説 〜JSPヘッダー/フッターの再利用でメンテ効率UP〜