SpringMVC JSP與Freemarker檢視直譯器整合
阿新 • • 發佈:2019-02-02
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檔案做為檢視。