Whiteship's Note

'프리마커와 스프링 연동'에 해당되는 글 1건

  1. 2008.02.20 Spring에서 Freemarker 사용하기 (2)

Spring에서 Freemarker 사용하기

Spring/Chapter 14 : 2008.02.20 11:48


- Spring은 Freemarker 2.3이상을 지원합니다.
- 사용하는 방법은 간단합니다.

0. 라이브러리 추가.
클래스패스에 freemarker.jar 파일을 추가해 줍니다. 이 파일은 spring-with-depedencies를 받으셨다면, lib에 freemarker에 있습니다.

1. XXX-servlet.xml에 뷰 리졸버와 프리마커 Configurer 객체를 세팅하는 FreeMarkerConfigurer 빈 등록하기

<!-- freemarker config -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>

<!--
  View resolvers can also be configured with ResourceBundles or XML files. If you need
  different view resolving based on Locale, you have to use the resource bundle resolver.
-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
  <property name="cache" value="true"/>
  <property name="prefix" value=""/>
  <property name="suffix" value=".ftl"/>
</bean>

끝. 매우 간단합니다. freemarkerConfig 빈은 프리마커의 Configuration 객체를 대변하는 객체로 이 객체다가 Configuration 객체에 필요한 설정을 하듯이 세터를 사용해서 설정하면 됩니다. 이 객체는 다른 컴포넌트들에게 공유될 객체가 아니라 순수하게 프리마커 설정을 하기 위해서 사용되는 빈입니다. 따라서 id는 없어도 됩니다. 그리고 FreeMarkerConfigurer 이 빈의 상위 클래스가 제공하는 setFreemarkerVariables 세터를 사용해서 프리마커 탬플릿에서 자주 사용하는 맵 객체를 세팅할 수도 있습니다. 또한 탬플릿 파일들의 기본 위치를 지정해야합니다. 그렇기 때문에 아래에 있는 viewResolver에서 prefix를 굳이 줄 필요가 없습니다.

FreeMarkerViewResolver에서는 인코딩을 설정할 수 있습니다. 위와 같이 레퍼런스에 나와있는 기본 설정대로 하면, 한글이 깨집니다. 그래서 contentType 속성에 text/html; charset=UTF-8 값을 설정해 줍니다.

저는 다음과 같이 설정했습니다.
    <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath"
            value="/WEB-INF/freemarker/" />
        <property name="freemarkerVariables">
            <map>
                <entry key="xml_escape" value-ref="fmXmlEscape" />
            </map>
        </property>
    </bean>
    <bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape"/>

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="contentType" value="text/html; charset=UTF-8" />
        <property name="suffix" value=".ftl" />
    </bean>

그리고 레퍼런스에서 스프링이 제공하는 커스텀 지시자를 사용하려면 페이지 위에 <#import "spring.ftl" as spring /> 이렇게 추가하라고 나와있는데, 제 경우에는 그렇게 하면 못 찾더군요. <#import "/spring.ftl" as spring /> 이렇게 /를 추가해주어야 클래스 패스(spring.jar안에 모모모 패키지에 들어있습니다.)에 있는 탬플릿 파일을 찾아서 사용할 수 있었습니다.

'Spring > Chapter 14' 카테고리의 다른 글

Spring에서 Freemarker 사용하기  (2) 2008.02.20
14.6. Document views (Excel)  (0) 2007.05.16
14.6. Document views (PDF)  (0) 2007.05.16
14.5. XSLT  (1) 2007.05.16
14.3. Tiles  (0) 2007.05.15
14. Integrating view technologies  (0) 2007.05.15
top