13.7.1. Introduction

테마를 적용하기 위해서는 전역적으로 사용할 스타일 시트(CSS)와 그림 파일등의 자원을 정의하는 것이 필요합니다.

13.7.2. Defining themes

ThemeSource 를 사용하면 되는데 XmlWebApplicationContext 가 ThemeSource 를 구현하고 있으며 내부 구현체로는 ResourceBundleThemeSource 를 기본으로 사용하고 있습니다.

사용자 삽입 이미지
ResourceBundleThemeSource는 classpath에 들어있는 프로퍼티 파일을 읽어 들여서 theme을 설정할 때 사용합니다.

styleSheet=/themes/cool/style.css
background=/themes/cool/img/coolBg.jpg

위와 같이 프로퍼티 파일에 설정해 두고 view에서는 spring:theme 태그를 사용하여 key에 해당하는 이름으로 각 요소들을 사용할 수 있습니다.

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
   <head>
      <link rel="stylesheet" href="<spring:theme code="styleSheet"/>" type="text/css"/>
   </head>
   <body background="<spring:theme code="background"/>">
      ...
   </body>
</html>


13.7.3. Theme resolvers

마지막으로 저렇게 만들어둔 여러개의 Theme 중에 어떤 Theme를 사용할지 선택해야 합니다. 이때 ThemeResolver를 사용하면 됩니다.

Class

Description

FixedThemeResolver

defaultThemeName
속성을 사용해서 고정적인 테마를 설정합니다.

SessionThemeResolver

각 세션에 테마에 대한 정보를 유지합니다. 세션 간에 공유되지는
않습니다.

CookieThemeResolver

선택된 테마에 대한 정보를 쿠키에 유지 합니다.