JSTL의 <fmt:parseNumber> 태그는 숫자(number), 백분율(percent), 통화(currency) 형식의 문자열을 구문 분석(파싱)하여 프로그래밍에서 사용할 수 있는 숫자 값으로 변환하는 데 사용됩니다. 예를 들어 "$1250003.350"처럼 통화 기호가 포함된 문자열에서 기호를 제거하고 숫자만 추출할 때 유용합니다.
주요 속성
<fmt:parseNumber> 태그에서 사용할 수 있는 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 읽어들일(구문 분석할) 숫자 값 | 아니요 | 태그 본문(body) |
| type | NUMBER, CURRENCY, PERCENT 중 하나 | 아니요 | number |
| parseLocale | 숫자를 구문 분석할 때 사용할 로케일(locale) | 아니요 | 기본 로케일 |
| integerOnly | 정수로만 구문 분석할지(true) 아니면 부동 소수점 수까지 포함할지(false) 여부 | 아니요 | false |
| pattern | 사용자 지정 구문 분석 패턴 | 아니요 | 없음 |
| timeZone | 표시되는 날짜의 시간대 | 아니요 | 기본 시간대 |
| var | 구문 분석된 숫자를 저장할 변수 이름 | 아니요 | 페이지에 바로 출력 |
| scope | 저장된 변수의 유효 범위(scope) | 아니요 | page |
<fmt:formatNumber> 태그와 마찬가지로 pattern 속성도 제공됩니다. 다만 차이점이 있다면, 출력 시에는 숫자를 어떤 형식으로 보여줄지 지정하는 반면, 구문 분석 시에는 pattern 속성이 파서가 입력 문자열을 어떤 형식으로 해석해야 하는지를 알려준다는 점입니다.
예제
다음은 통화 형식의 문자열을 구문 분석하는 간단한 예제입니다.
<%@ taglib prefix = "c" uri = "https://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix = "fmt" uri = "https://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:parseNumber Tag</title>
</head>
<body>
<h3>Number Parsing:</h3>
<c:set var = "balance" value = "$1250003.350" />
<fmt:parseNumber var = "i" type = "currency" value = "${balance}" />
<p>Parsed Number (1) : <c:out value = "${i}" /></p>
<fmt:parseNumber var = "i" integerOnly = "true" type = "currency" value = "${balance}" />
<p>Parsed Number (2) : <c:out value = "${i}" /></p>
</body>
</html>
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Number Parsing: Parsed Number (1) : 1250003.35 Parsed Number (2) : 1250003
결과 분석
첫 번째 결과에서는 type="currency" 옵션 덕분에 통화 기호($)가 자동으로 제거되고 "1250003.35"라는 숫자 값만 추출됩니다. 두 번째 결과에서는 integerOnly="true" 속성을 추가하여 소수점 이하 자릿수를 버리고 정수 부분인 "1250003"만 얻은 것을 확인할 수 있습니다. 이처럼 <fmt:parseNumber> 태그를 활용하면 화면에 표시된 통화나 백분율 문자열을 계산 가능한 숫자 데이터로 손쉽게 변환할 수 있습니다.