Tag <fmt:parseNumber> แปลง String เป็น Number (รองรับ currency, percent, number)
Attributes
| Attribute | คำอธิบาย | Required | Default |
|---|---|---|---|
| value | String ที่จะ parse | No | Body |
| type | NUMBER, CURRENCY, PERCENT | No | number |
| parseLocale | Locale สำหรับ parsing (สกุลเงิน, decimal format) | No | Default locale |
| integerOnly | true/false - parse เฉพาะจำนวนเต็ม | No | false |
| pattern | Custom parse pattern | No | - |
| timeZone | Time zone (ไม่เกี่ยวข้องกับ number) | No | Default |
| var | Variable เก็บ Number object | No | Print to page |
| scope | Scope ของ var | No | page |
ตัวอย่าง Parse Currency
<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="https://java.sun.com/jsp/jstl/fmt" %>
<html>
<body>
<h3>Number Parsing</h3>
<c:set var="balance" value="$1,250,003.35"/>
<fmt:parseNumber var="num1" type="currency" value="${balance}"/>
<p>Parsed (1): <c:out value="${num1}"/></p> <-- 1250003.35 -->
<fmt:parseNumber var="num2" type="currency" integerOnly="true" value="${balance}"/>
<p>Parsed Integer Only: <c:out value="${num2}"/></p> <-- 1250003 -->
<!-- Thai Baht -->
<c:set var="thaiPrice" value="฿1,234.56"/>
<fmt:parseNumber var="thaiNum" type="currency" parseLocale="th_TH" value="${thaiPrice}"/>
<p>Thai Baht: <c:out value="${thaiNum}"/></p>
</body>
</html>
ผลลัพธ์
Number Parsing: Parsed (1): 1250003.35 Parsed Integer Only: 1250003 Thai Baht: 1234.56
Parse Locale สำคัญ
parseLocale="en_US"- คาดหวัง $1,234.56 (comma grouping, dot decimal)parseLocale="de_DE"- คาดหวัง 1.234,56 (dot grouping, comma decimal)parseLocale="th_TH"- คาดหวัง ฿1,234.56
ข้อควรระวัง
- Input string ต้อง match locale pattern ไม่งั้น parse fail
- Currency symbol อาจต้องมีใน string (ขึ้นอยู่กับ locale)
- Java 8+: ใช้
NumberFormat.getCurrencyInstance(locale).parse()ใน Java code แทน
ร่วมกับ <fmt:formatNumber>
Format number → String: <fmt:formatNumber type="currency" value="${1234.56}"/>
Parse String → Number: <fmt:parseNumber type="currency" value="${input}"/>