1. 程式人生 > >SpringMVC JSP與Freemarker檢視直譯器整合

SpringMVC JSP與Freemarker檢視直譯器整合

Spring MVC中如果只使用JSP做檢視,可以使用下面這段即可解決:

<!-- 檢視解釋類 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/><!--可為空,方便實現自已的依據副檔名來選擇檢視解釋類的邏輯  -->
    <property
name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
  • 但很多時候我們需要的不只是JSP做view,可能會引用velocity、freemarker等做為view引擎時,需要加入額外的配置。

下面是在配置檔案中加入Freemarker的方法,與JSP並存:

<!--JSP檢視解析器-->
<bean id="viewResolverJsp" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> <property name="order" value="1"/> <!-- 指定檢視解析器的順序,spring根據order順序依次尋找符合條件的檢視解析器 -->
</bean> <bean id="freeMarkerViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="suffix" value=".htm" /> <property name="contentType" value="text/html;charset=UTF-8" /> <property name="exposeRequestAttributes" value="true" /> <property name="exposeSessionAttributes" value="true" /> <property name="exposeSpringMacroHelpers" value="true" /> <property name="requestContextAttribute" value="request" /> <property name="cache" value="true" /> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/> <property name="order" value="0" /> </bean> <!-- FreeMarker配置 --> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <!-- 指定FreeMarker模板檔案目錄 --> <property name="templateLoaderPaths" value="classpath:com/vlife/framework/template/resource/freemarker/bootstrap/adminlte,/WEB-INF/ftl/" /> <!-- 編碼設定 --> <property name="freemarkerSettings"> <props> <prop key="defaultEncoding">UTF-8</prop> <prop key="auto_import">include/spring.ftl as spring</prop> </props> </property> </bean>
在JSP和Freemarker的配置項中都有一個order property,上面例子是把freemarker的order設定為0,jsp為1。意思是找view時,先找ftl檔案,再找jsp檔案做為檢視。