一、Spring in Action (轉(zhuǎn)自 http://book.csdn.net/bookfiles/167/index.html )
FreeMarker比Velocity復(fù)雜一點(diǎn)點(diǎn),但這只是它比Velocity的功能強(qiáng)大一點(diǎn)點(diǎn)的結(jié)果。FreeMarker提供了對(duì)一些常用任務(wù)的內(nèi)置支持,比如日期和數(shù)字的格式化,以及去除空白字符。在Velocity中,這些特性只有通過附加工具才能實(shí)現(xiàn)。
1、配置FreeMarkerConfigurer
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> …… </bean>
通過freemarkerSettings屬性,也能夠設(shè)置其他FreeMarker的配置。例如,FreeMarker默認(rèn)每隔5秒檢查模板是否被更新,如果已經(jīng)更新了,就會(huì)重新加載并分析模板。但經(jīng)常檢查模板是否更新可能比較耗時(shí)。如果你的應(yīng)用運(yùn)行在生產(chǎn)模式下,而且你預(yù)期模板不會(huì)經(jīng)常更新,則可以將更新的延遲時(shí)間延長(zhǎng)至一個(gè)小時(shí)或者更久。
可以通過為freemarkerSettings屬性設(shè)置template_update_delay達(dá)到這一目的。例如:
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">3600</prop>
</props>
</property>
設(shè)置template_update_delay為3600(秒),因此FreeMarker只有在1個(gè)小時(shí)之后才檢查模板是否更新。
2、解析FreeMarker視圖
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix"><value>.ftl</value></property>
</bean>
將請(qǐng)求和會(huì)話屬性作為變量暴露給FreeMarker模板使用。要做到這一點(diǎn),可以設(shè)置exposeRequestAttributes或者exposeSessionAttributes為true:
<property name="exposeRequestAttributes">
<value>true</value>
</property>
<property name="exposeSessionAttributes">
<value>true</value>
</property>
使用這些宏,必須設(shè)置FreeMarkerViewResolver的exposeMacroHelpers屬性為true:
<property name="exposeSpringMacroHelpers">
<value>true</value>
</property>
3、在FreeMarker中綁定表單域
如:
<@spring.bind "command.phone" />
phone: <input type="text"
name="${spring.status.expression}"
value="${spring.status.value}">
<font color="#FF0000">${spring.status.errorMessage}</font><br>
<@spring.bind "command.email" />
email: <input type="text"
name="${spring.status.expression}"
value="${spring.status.value}">
<font color="#FF0000">${spring.status.errorMessage}</font><br>
4、最后,你還需要做一件事才能使用FreeMarker宏。在所有需要使用<@spring.bind>和<@spring.bindEscaped>的FreeMarker模板的頂部增加以下一行:
<#import "/spring.ftl" as spring />
這一行會(huì)在模板中導(dǎo)入Spring的FreeMarker宏。
二、參閱:Spring Framework reference 2.0.5 參考手冊(cè)中文版
使用Velocity或FreeMarker需要包含 velocity-1.x.x.jar
或 freemarker-2.x.jar
。另外Velocity還需要 commons-collections.jar
。一般把這些jar包放在 WEB-INF/lib
下,這樣可以保證J2EE Server找到它們并加到web應(yīng)用的classpath下。
1、Context 配置
<!-- freemarker config -->
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/freemarker/"/>
</bean>
<!--
也可以把ResourceBundle或XML文件配置到視圖解析器中。如果你需要根據(jù)Locale來解析不同的視圖,你就得使用resource bundle解析器。.
-->
<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"/>
<!-- 如果你需要使用Spring 對(duì) FreeMarker 宏命令的支持, 將這個(gè)屬性設(shè)為true -->
<property name="exposeSpringMacroHelpers" value="true"/>
</bean>
2、創(chuàng)建模板
3、高級(jí)配置
4、綁定支持和表單處理
示例
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/config/template/" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="locale">zh_CN</prop>
</props>
</property>
</bean>
聯(lián)系客服