Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSTL fmt:setBundle 태그로 하나의 JSP에서 여러 리소스 번들 사용하기

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 애플리케이션에서 여러 리소스 번들을 유연하게 전환하며 사용할 수 있습니다.