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.7:【Struts2】バリデーションUIの味方! `<s:fielderror>` / `<s:actionerror>` / `<s:actionmessage>` 徹底ガイド 〜エラーメッセージの表示とフォーム連携の基本〜

Last updated at Posted at 2025-05-21

本記事は、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シリーズ)


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?