Tag <c:forTokens> แยก string เป็น tokens ตาม delimiter แล้ว iterate แต่ละ token คล้าย String.split() แต่ใน JSTL
Attributes
| Attribute | คำอธิบาย | Required | Default |
| items | String ที่จะแยก | Yes | - |
| delims | ตัวคั่น (delimiters) - แต่ละ char เป็น delimiter แยกกัน | Yes | - |
| var | Variable name สำหรับ token ปัจจุบัน | No | - |
| varStatus | Loop status object (count, index, first, last) | No | - |
| begin, end, step | ควบคุม range การ loop (เหมือน forEach) | No | - |
ตัวอย่าง
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:forTokens items="Apple,Banana,Orange" delims="," var="fruit">
<c:out value="${fruit}"/><br/>
</c:forTokens>
<hr/>
<!-- หลาย delimiters -->
<c:forTokens items="A;B|C,D" delims=";|," var="token">
[<c:out value="${token}"/>]
</c:forTokens>
</body>
</html>
ผลลัพธ์
Apple
Banana
Orange
[A] [B] [C] [D]
ความแตกต่าง <c:forTokens> vs <c:forEach>
| คุณสมบัติ | <c:forTokens> | <c:forEach> |
| Input | String (แยกด้วย delimiter) | Collection, Array, Map, Iterator |
| Delimiter | ระบุใน delims attribute | N/A |
| Use case | Parse CSV, token strings | Iterate collections ทั่วไป |
ข้อควรระวัง
delims แต่ละตัวอักษรเป็น delimiter แยกกัน (ไม่ใช่ string pattern)
- Empty tokens จะถูกข้าม (ไม่สร้าง iteration)
- Trim whitespace เองถ้าจำเป็น