JSTL(JSP Standard Tag Library)에서 제공하는 <fmt:parseNumber> 태그는 문자열로 된 숫자, 백분율(%), 통화 값을 구문 분석(파싱)하여 프로그래밍에서 사용할 수 있는 숫자 데이터로 변환해 줍니다. 특히 사용자 입력값이나 외부 데이터에서 퍼센트 형태의 값을 추출해야 할 때 매우 유용합니다.
fmt:parseNumber 태그의 주요 속성
<fmt:parseNumber> 태그에서 사용할 수 있는 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| value | 읽어들일(파싱할) 숫자 값 | 아니요 | 태그 본문(Body) |
| type | NUMBER(숫자), CURRENCY(통화), PERCENT(백분율) 중 선택 | 아니요 | number |
| parseLocale | 숫자를 파싱할 때 사용할 로케일(locale) | 아니요 | 기본 로케일 |
| integerOnly | 정수만 파싱할지(true) 아니면 부동 소수점까지 파싱할지(false) 여부 | 아니요 | false |
| pattern | 사용자가 직접 지정하는 파싱 패턴 | 아니요 | 없음 |
| timeZone | 표시되는 날짜의 시간대 | 아니요 | 기본 시간대 |
| var | 파싱된 숫자를 저장할 변수 이름 | 아니요 | 페이지에 바로 출력 |
| scope | 저장된 변수의 유효 범위(scope) | 아니요 | page |
pattern 속성에 대한 참고 사항
pattern 속성은 <fmt:formatNumber> 태그의 pattern 속성과 동일한 방식으로 작동합니다. 다만 차이점이 있다면, 포매팅(formatting)이 아닌 파싱(parsing)의 경우에는 pattern 속성이 파서(parser)에게 "입력값이 어떤 형식으로 되어 있는지"를 알려주는 역할을 한다는 점입니다.
백분율 파싱 예제
다음은 <fmt:parseNumber> 태그를 사용하여 백분율 값을 파싱하는 실제 예제입니다.
<%@ 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 태그</title>
</head>
<body>
<h3>숫자 파싱:</h3>
<c:set var = "balance" value = "125.350%" />
<fmt:parseNumber var = "i" type = "PERCENT" value = "${balance}" />
<p>파싱 결과 (1) : <c:out value = "${i}" /></p>
<fmt:parseNumber var = "i" integerOnly = "true" type = "PERCENT" value = "${balance}" />
<p>파싱 결과 (2) : <c:out value = "${i}" /></p>
</body>
</html>위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
숫자 파십: 파싱 결과 (1) : 125.35 파싱 결과 (2) : 125
예제 코드 해설
먼저 <c:set> 태그를 사용하여 "125.350%"라는 백분율 문자열을 balance 변수에 저장합니다. 이후 type="PERCENT" 옵션을 지정한 <fmt:parseNumber> 태그로 해당 값을 파싱합니다.
첫 번째 파싱에서는 소수점까지 그대로 변환되어 125.35가 출력되고, 두 번째 파싱에서는 integerOnly="true" 옵션이 적용되어 소수점 아래가 잘린 125라는 정수 값만 출력됩니다.
이처럼 <fmt:parseNumber> 태그와 type="PERCENT" 속성을 조합하면 JSP에서 백분율 문자열을 손쉽게 숫자 데이터로 변환할 수 있습니다.