項目要求用到freemaker,簡單的接觸了一下。
freemaker的作用是,按照配置好的模板文件.ftl生成html文件。
可單獨使用,也可集成到springmvc
freemarker頁面解析器 的作用jsp頁面解析器作用一樣,用於解析返回的modelAndView中的頁面。
此處配置存在的問題是,springmvc一般用
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="order" value="1">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="order" value="1">
</bean>
<!--
<bean id="securityMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
</value>
</property>
</bean>-->
<!--
<bean id="securityMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
</value>
</property>
</bean>-->
來解析頁面。如果返回的是 new ModelAndView(“xxx.ftl”)那麼會先解析到這個xxx.ftl爲jsp,會一直找不到資源,所以需要加上額外的屬性order,配置優先級,將jsp優先級配置爲1,後於freemarker,解析器進行解析。但是此時問題還沒有解決完,freemarker頁面解析器又會將正常的jsp頁面作爲freemaker的資源進行解析。變相的解決辦法爲:在freemaker解析器中加入<property name="viewName"
valie="XX*">,則freemarker只會去處理以XX開頭通配的所有的資源。
廢話少說,直接上配置,
<!-- freemarker頁面解析器-->
<bean id="viewResolver1" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix">
<value>.ftl</value>
</property>
<property name="viewClass">
<value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
</property>
<bean id="viewResolver1" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="suffix">
<value>.ftl</value>
</property>
<property name="viewClass">
<value>org.springframework.web.servlet.view.freemarker.FreeMarkerView</value>
</property>
<property name="viewName" valie="XX*">,
</bean>
<!-- 配置Freemarker -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPaths">
<list>
<value>/WEB-INF/view/</value>
<value>/WEB-INF/view1/</value>
</list>
</property>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="number_format">0.##</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="classic_compatible">true</prop>
<prop key="template_exception_handler">ignore</prop>
</props>
</property>
</bean>
<!-- 配置Freemarker -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPaths">
<list>
<value>/WEB-INF/view/</value>
<value>/WEB-INF/view1/</value>
</list>
</property>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="number_format">0.##</prop>
<prop key="datetime_format">yyyy-MM-dd HH:mm:ss</prop>
<prop key="classic_compatible">true</prop>
<prop key="template_exception_handler">ignore</prop>
</props>
</property>
<property name="order" value="0">
</bean>
</bean>
配置好之後,即可正常使用freemakerConfig了