Spring框架集成FreeMarker

一、Spring in Action (转自:http://blog.163.com/zhang-_-jie/blog/static/16178437820105821120822/ )
  FreeMarker比Velocity复杂一点点,但这只是它比Velocity的功能强大一点点的结果。FreeMarker提供了对一些常用任务的内置支持,比如日期和数字的格式化,以及去除空白字符。在Velocity中,这些特性只有通过附加工具才能实现。

1、配置FreeMarkerConfigurer

<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> 
   ……    
</bean>

 

  通过freemarkerSettings属性,也能够设置其他FreeMarker的配置。例如,FreeMarker默认每隔5秒检查模板是否被更新,如果已经更新了,就会重新加载并分析模板。但经常检查模板是否更新可能比较耗时。如果你的应用运行在生产模式下,而且你预期模板不会经常更新,则可以将更新的延迟时间延长至一个小时或者更久。

  可以通过为freemarkerSettings属性设置template_update_delay达到这一目的。例如:

<property name="freemarkerSettings">
      <props>
        <prop key="template_update_delay">3600</prop>
      </props>
</property>

 

2、解析FreeMarker视图

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="suffix"><value>.ftl</value></property>
</bean>

  将请求和会话属性作为变量暴露给FreeMarker模板使用。要做到这一点,可以设置exposeRequestAttributes或者exposeSessionAttributes为true:

<property name="freemarkerSettings">
    <props>
        <prop key="template_update_delay">3600</prop>
    </props>
</property> 

使用这些宏,必须设置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 />
  这一行会在模板中导入Spring的FreeMarker宏。

posted @ 2012-12-11 16:15  行在途中  阅读(1098)  评论(0编辑  收藏  举报