Custom tag เป็นเอลิเมนต์ภาษา JSP ที่ผู้ใช้กำหนดเอง เมื่อ JSP ถูกแปลเป็นเซิร์ฟเล็ต Tag จะถูกแปลงเป็นการทำงานบน tag handler object
ขั้นตอนการสร้าง Custom Tag แบบง่าย (Simple Tag Handler - JSP 2.0+)
1. สร้าง Tag Handler Class (extends SimpleTagSupport)
package com.example;
import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;
public class HelloTag extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
out.println("Hello Custom Tag!");
}
}
2. คอมไพล์และวางไฟล์ .class
คอมไพล์แล้ววางใน WEB-INF/classes/com/example/HelloTag.class (ตาม package structure)
3. สร้างไฟล์ TLD (Tag Library Descriptor)
สร้าง WEB-INF/custom.tld:
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>Example TLD</short-name>
<tag>
<name>Hello</name>
<tag-class>com.example.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
4. ใช้งานใน JSP
<%@ taglib prefix="ex" uri="WEB-INF/custom.tld" %>
<html>
<head><title>Custom Tag ตัวอย่าง</title></head>
<body>
<ex:Hello/>
</body>
</html>
ผลลัพธ์
Hello Custom Tag!
ขยายความสามารถ
- รับ attribute → เพิ่ม setter method และ
<attribute>ใน TLD (ดูบทความ ID 1004075926) - รองรับ body content → ตั้ง
body-contentเป็นscriptlessหรือtagdependentและใช้getJspBody().invoke() - เข้าถึง implicit objects → ผ่าน
getJspContext()
SimpleTagSupport ทำให้เขียน custom tag ง่ายกว่ารุ่นเก่า (TagSupport/BodyTagSupport) มาก