fmt:setBundle 태그란?
JSTL(JSP Standard Tag Library)의 <fmt:setBundle> 태그는 지정한 리소스 번들(resource bundle)을 로드하여 명명된 범위 변수(scoped variable) 또는 번들 구성 변수(configuration variable)에 저장합니다. 이렇게 저장된 번들은 <fmt:message> 태그의 bundle 속성을 통해 참조할 수 있기 때문에, 하나의 JSP 페이지 안에서 여러 개의 리소스 번들을 동시에 다뤄야 하는 상황에서 특히 유용하게 활용됩니다.
주요 속성
<fmt:setBundle> 태그에서 사용할 수 있는 속성은 다음과 같습니다.
| 속성 | 설명 | 필수 여부 | 기본값 |
|---|---|---|---|
| basename | 범위 변수 또는 구성 변수로 노출할 리소스 번들 계열의 기본 이름 | 예 | 없음 |
| var | 새로 로드한 번들을 저장할 변수의 이름 | 아니오 | 기본 번들을 대체 |
| scope | 새 번들을 저장할 변수의 적용 범위 | 아니오 | page |
var 속성을 생략하면 로드된 번들이 해당 범위의 기본 번들로 설정되며, var 속성을 지정하면 번들이 별도의 변수에 저장되어 필요할 때마다 선택적으로 사용할 수 있습니다.
사용 예제
다음 예제는 <fmt:setLocale>로 로케일을 영어(en)로 지정한 뒤, <fmt:setBundle>로 리소스 번들을 로드하고 var 속성에 "lang"이라는 이름으로 저장합니다. 이후 <fmt:message> 태그에서 bundle 속성으로 ${lang}을 참조하여 해당 번들의 메시지를 출력합니다.
<%@ 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:setBundle 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:setBundle> 태그와 var 속성을 조합하면 각각의 번들을 독립적인 변수로 관리할 수 있으므로, 다국어 처리가 필요한 JSP 애플리케이션에서 여러 리소스 번들을 유연하게 전환하며 사용할 수 있습니다.