🔗 本章は「Vol.8.9〜:Struts2 タグライブラリ応用編(実務/初級応用)」シリーズです。
Struts2の <s:*>
タグに慣れてきたら、次のステップとして「独自のカスタムタグ(JSPタグライブラリ)」の作成を覚えましょう!
本記事では以下の構成で解説します:
- ✅ TLDファイル(タグ定義XML)の作り方
- ✅ カスタムタグクラス(Java)の作成方法
- ✅ JSPからの使い方
- ✅ よく使う実務パターンの紹介
✅ 想定読者
- Struts2のUIタグにはある程度慣れてきた
- JSPファイルに記述が散らかってきたので整理したい
- 再利用可能なUIパーツを部品化したい
✅ 本記事で学べること
項目 | 内容 |
---|---|
TLDファイルの構造 | タグライブラリ定義の基本 |
タグクラスの作成 |
TagSupport を継承したタグ実装 |
JSPでの使い方 |
<%@ taglib ... %> による呼び出し |
実務活用 | UI共通化・メッセージ表示・再利用部品の実装 |
🛠 Step 1:TLDファイルの作成
/WEB-INF/custom.tld
に以下の内容で定義します。
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>custom</short-name>
<uri>http://example.com/custom</uri>
<tag>
<name>messageBox</name>
<tag-class>com.example.tags.MessageBoxTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>type</name>
<required>false</required>
</attribute>
<attribute>
<name>message</name>
<required>true</required>
</attribute>
</tag>
</taglib>
🛠 Step 2:Javaのタグクラスを作成
package com.example.tags;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspWriter;
public class MessageBoxTag extends TagSupport {
private String type;
private String message;
public void setType(String type) {
this.type = type;
}
public void setMessage(String message) {
this.message = message;
}
@Override
public int doStartTag() {
try {
JspWriter out = pageContext.getOut();
String cssClass = "info".equals(type) ? "box-info" : "box-default";
out.write("<div class='" + cssClass + "'>" + message + "</div>");
} catch (Exception e) {
e.printStackTrace();
}
return SKIP_BODY;
}
}
🛠 Step 3:JSPから呼び出す
<%@ taglib prefix="c" uri="http://example.com/custom" %>
<html>
<body>
<c:messageBox type="info" message="保存が完了しました。" />
</body>
</html>
💡 実務での応用例
カスタムタグ名 | 用途例 |
---|---|
<c:messageBox> |
エラーメッセージや通知の共通化 |
<c:formGroup> |
Bootstrap対応フォーム入力部品化 |
<c:submitButton> |
アイコン付きボタンの共通利用 |
📝 補足:TagSupportを使う理由
JavaEEの TagSupport
を使うことで、JSPレベルで再利用可能な部品をJavaで表現できます。
Spring Bootでは「Thymeleaf + フラグメント」などの手段が主流ですが、古典的なJSP構成のStruts2プロジェクトでは今も有効です。
🔖 次回予告
📗 Vol.8.11:タグの出力をスタイリッシュに!UI統一Tips
→ Struts2タグ(例:<s:form>
や <s:fielderror>
)の出力HTMLを読み解き、
BootstrapやCSSフレームワークと連携させる方法を紹介します!
🧭 Vol.8 応用編シリーズ(進捗一覧)
Vol | 内容 | 公開状況 |
---|---|---|
8.10 | カスタムタグ入門 | ✅ 本記事 |
8.11 | UI出力のカスタマイズ | 🔜 執筆予定 |
8.12 | 共通レイアウト構成 | 🔜 執筆予定 |
🙏 最後に
Struts2でのUI開発を効率化するには、タグの理解と部品化が鍵になります。
本記事が皆さんの現場開発の一助になれば幸いです!
🌟 「いいね」や「ストック」で応援いただけると励みになります!
yaml
コピーする
編集する