JSTL fmt:message 태그란?
<fmt:message> 태그는 지정한 키(key)에 해당하는 지역화된 메시지를 찾아 매핑하고, 필요에 따라 매개변수 교체(parametric replacement)까지 수행하는 JSTL 태그입니다. 다국어 웹 애플리케이션을 개발할 때 리소스 번들(Resource Bundle)에 저장된 메시지를 손쉽게 화면에 출력할 수 있도록 도와줍니다.
주요 속성
<fmt:message> 태그에서 사용할 수 있는 주요 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| key | 가져올 메시지의 키 | 아니오 | 태그 본문(Body) |
| bundle | 사용할 리소스 번들 | 아니오 | 기본 번들 |
| var | 지역화된 메시지를 저장할 변수의 이름 | 아니오 | 페이지에 바로 출력 |
| scope | 지역화된 메시지를 저장할 변수의 유효 범위 | 아니오 | Page |
속성 설명
key 속성은 리소스 번들에서 실제 메시지를 찾기 위한 식별자 역할을 합니다. 만약 key 속성을 생략하면 태그 본문에 작성된 내용이 키로 사용됩니다. bundle 속성은 <fmt:setBundle> 태그로 생성한 번들을 지정할 때 사용하며, 생략 시 기본 번들이 적용됩니다. var와 scope 속성을 함께 사용하면 메시지를 즉시 출력하지 않고 변수에 저장해 두었다가 나중에 활용할 수 있습니다.
사용 예제
다음은 fmt:message 태그를 사용하여 리소스 번들에서 메시지를 가져와 출력하는 예제입니다.
<%@ taglib uri = "https://java.sun.com/jsp/jstl/core" prefix = "c" %>
<%@ taglib uri = "https://java.sun.com/jsp/jstl/fmt" prefix = "fmt" %>
<html>
<head>
<title>JSTL fmt:message Tag</title>
</head>
<body>
<fmt:setLocale value = "en"/>
<fmt:setBundle basename = "com.tutorialspoint.Example" var = "lang"/>
<fmt:message key = "count.one" bundle = "${lang}"/><br/>
<fmt:message key = "count.two" bundle = "${lang}"/><br/>
<fmt:message key = "count.three" bundle = "${lang}"/><br/>
</body>
</html>실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
One Two Three
정리
fmt:message 태그는 먼저 <fmt:setLocale>로 로케일을 설정하고, <fmt:setBundle>로 사용할 리소스 번들을 지정한 뒤, 각 키에 해당하는 메시지를 가져오는 방식으로 동작합니다. 이처럼 fmt:message 태그를 활용하면 언어별 메시지 관리가 체계적으로 이루어져 국제화(i18n) 작업을 훨씬 효율적으로 처리할 수 있습니다.