β

FreeMarker配置项目全局路径

李阳的技术博客 258 阅读

最近再做一个Spring+Spring Mvc +FreeMarker搭建的项目,老实说这算是我第一次使用Spring和FreeMarker来开发项目,自然是如同新手一般,边了解边学习边开发。开发工程中遇到了很多问题,再次先总结一篇。由于第一次使用FreeMarker,以前习惯于JSP的声明页面的根路径,但是FreeMarker如何配置呢,且看我这边找到的一个方法:

首先定义一个类,继承FreeMarkerView:

import org.springframework.web.servlet.view.freemarker.FreeMarkerView;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * User: liyang
 * Date: 16/5/6
 * Time: 上午11:44
 * DESCIPTION: 定义FreeMarker的项目路径
 */
public class BaseFreeMarkerView extends FreeMarkerView {
    private static final String CONTEXT_PATH = "base";
    @Override
    protected void exposeHelpers(Map<String, Object> model, HttpServletRequest request) throws Exception {
        model.put(CONTEXT_PATH, request.getContextPath());
        super.exposeHelpers(model, request);
    }
}

然后,springMVC配置文件中,加上关于Freemarker视图解析器的相关配置,如下:

<bean id="freemarkerResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="order" value="1" />
        <property name="suffix" value=".ftl" />
        <property name="contentType" value="text/html;charset=utf-8" />
        <!-- 自定义FreeMarkerView,用来定义项目的全局路径 -->
        <property name="viewClass" value="com.xxx.dataui.helper.BaseFreeMarkerView" />
        <property name="exposeRequestAttributes" value="true"/>
        <property name="exposeSessionAttributes" value="false"/>
        <property name="exposeSpringMacroHelpers" value="true"/>
        <property name="requestContextAttribute" value="request"/>
    </bean>

如此配置,即可在.ftl文件中使用${base}来代表项目根路径了。

<li id="open1-1"><a href="https://blog.liyang.io/${base}/openpc">PC开通</a></li>

FreeMarker比较蛋疼的一点就是修改了JS后必须重启项目才行,因为他生成了静态页面,基本上不可能动态的去修改了,或许我还没找到方法。如有热部署方法,还请告知。

未经允许不得转载: 李阳的技术博客 » FreeMarker配置项目全局路径

作者:李阳的技术博客
专注于分享IT技术
原文地址:FreeMarker配置项目全局路径, 感谢原作者分享。

发表评论