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。