(1)新增自定义ViewResolver
package com.zcrm.resolver;
import java.util.Locale;
import java.util.Map;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
public class MultViewResolver implements ViewResolver {
private Map<String, ViewResolver> resolvers;
@Override
public View resolveViewName(String viewName, Locale locale) throws Exception {
int n = viewName.lastIndexOf(".");
String suffix = "";
if (n == (-1)) {
suffix = "jsp";
} else {
suffix = viewName.substring(n + 1);
viewName = viewName.substring(0, n);
}
// 根据下划线后面的字符串去获取托管的视图解析类对象
ViewResolver resolver = resolvers.get(suffix);
if (resolver != null) {
return resolver.resolveViewName(viewName, locale);
} else {
return null;
}
}
public Map<String, ViewResolver> getResolvers() {
return resolvers;
}
public void setResolvers(Map<String, ViewResolver> resolvers) {
this.resolvers = resolvers;
}
}
(2)修改spring-mvc.xml
,使用自定义
ViewResolver
<bean id="zcrmViewResolver" class="com.zcrm.resolver.MultViewResolver">
<property name="resolvers">
<map>
<!-- 定义跳转的文件的前后缀 ,视图模式配置 -->
<entry key="jsp">
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/pages/" />
<property name="suffix" value=".jsp" />
</bean>
</entry>
<entry key="ftl">
<bean id="viewResolverFtl"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
<property name="contentType" value="text/html; charset=utf-8" />
<property name="cache" value="true" />
<property name="prefix" value="" />
<property name="suffix" value=".ftl" />
</bean>
</entry>
</map>
</property>
</bean>
<!-- ******************************freeMarker配置【START】****************************** -->
<bean id="freemarkerConfig"
class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/jsp/ftl/" />
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
</map>
</property>
<property name="defaultEncoding" value="utf-8" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">3600</prop>
</props>
</property>
</bean>
<bean id="fmXmlEscape" class="freemarker.template.utility.XmlEscape" />
<!-- ******************************freeMarker配置【END】****************************** -->
(3)新增freemarker.jar
(4)编写ftl文件
datatables.ftl
(5)编写测试Controller
package com.zcrm.controller.crm2.freemarker;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/crm2/freemarker")
public class Crm2FreeMarkerController {
@RequestMapping(value={"/init"},method=RequestMethod.GET)
public String updatePassword(HttpServletRequest req, Model model) {
return "crm2/datatables.ftl";
}
}