FreeMarker学习(springmvc配置)

springMvc配置

<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/WEB-INF/templates/"/>
    <property name="defaultEncoding" value="utf-8" />
    <property name="freemarkerSettings">
      <props>
        <prop key="template_update_delay">10</prop>
        <prop key="locale">zh_CN</prop>
        <prop key="datetime_format">yyyy-MM-dd</prop>
        <prop key="date_format">yyyy-MM-dd</prop>
        <prop key="number_format">#.##</prop>
        <prop key="auto_import">frame/base.ftl as base</prop>
        <prop key="auto_include">frame/base.ftl</prop>
      </props>
    </property>
    <!--设置一些常用的全局变量 -->
    <property name="freemarkerVariables">
        <map>
            <entry key="xml_escape" value-ref="fmXmlEscape" />
            <entry key="webRoot" value="/shop"></entry>
            <entry key="jsRoot" value="/shop/js"></entry>
            <entry key="xml_escape" value-ref="fmXmlEscape" />
        </map>
    </property>
</bean>

<bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true" />
    <property name="suffix" value=".ftl" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
    <property name="allowSessionOverride" value="true" />
    <property name="allowRequestOverride" value="true" />
    <property name="exposeSpringMacroHelpers" value="false" />
    <property name="exposeRequestAttributes" value="true" />
    <property name="exposeSessionAttributes" value="true" />
    <property name="requestContextAttribute" value="request" />
    <property name="order" value="0" />
</bean>

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="" />
    <property name="viewNames" value="*.html,*.jsp" />
    <property name="suffix" value="" />
    <property name="viewClass"
        value="org.springframework.web.servlet.view.InternalResourceView" />
    <property name="order" value="1"></property>
</bean>

freemarkerSettings全局配置:

  • template_update_delay:模板缓存时间,超过这个时间值,直接从磁盘获取最新的模板。
  • locale:配置本地化语言
  • datetime_format:配置日期时间格式
  • date_format:配置日期格式
  • number_format:配置数字格式
  • auto_import:自动导入模板文件,需要定义一个命名空间
  • auto_include:自动包含模板文件,不需要定义一个命名空间

 其他详情参考setting配置:https://freemarker.apache.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-

freemarkerVariables全局变量设置:

  • xml_escape
  • webRoot
  • jsRoot
  • xml_escape

FreeMarkerViewResolver:

  • order:匹配视图解析器优先级,值越小优先级越高。如果匹配不成功,则自动选择order=1的其他解析器,目前的通用解析器可以解析.html跟.jsp的视图,如果需要其他视图的解析器,可以自行添加。
  • exposeRequestAttributes、exposeSessionAttributes两个属性都被设置为true。结果是请求和会话属性都被复制到模板的属性集中,可以使用FreeMarker的表达式语言来访问并显示。使用这些宏,必须设置FreeMarkerViewResolver的exposeSpringMacroHelpers属性为true。
posted @ 2019-05-08 23:42  i_Raven  阅读(276)  评论(0编辑  收藏  举报