从不同模块加载的Freemarker模板

时间:2016-02-23 21:47:26

标签: java spring intellij-idea freemarker

我正在尝试使用Freemarker从多个位置加载Spring MVC个模板。该项目是使用Intellij开发的。

我有两个maven项目:

  • my-website:主要maven项目,包含WEB-INF/ftl的自定义模板,例如WEB-INF/ftl/landing/login.ftl

  • generic-templates:包含WEB-INF/ftl的通用自由标记模板,例如WEB-INF/ftl/landing/login.ftl

例如,Freemarker的想法是在“我的网站”中搜索登陆/登录。如果没有找到,则在' generic-templates'中搜索它。着陆/登录。

根据freemarker template loader documentationfreemarker.xml应如下所示:

    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPaths" value="generic-templates://WEB-INF/ftl/,/WEB-INF/ftl/" />
    </bean>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <property name="cache" value="true"/>
        <property name="prefix" value=""/>
        <property name="suffix" value=".ftl"/>
    </bean>

但我显然做了一些非常错误的事情,因为它不起作用:找不到通用模板的文件。

任何想法我怎样才能使这项工作? (欢迎实现同一目标的其他方法)

我该如何调试?

1 个答案:

答案 0 :(得分:0)

计划部分(包括:之前和之后的部分)是某些集成框架通过其自定义TemplateLoader - s使用的内容,而其他部分则不是。{p>}解释该计划不是由FreeMarker本身完成的。此外,Spring对资源路径中的方案有自己的想法,这可能会干扰这种机制。

然而,一个人定制的东西,该方案不应该引用Maven模块名称,因为Maven模块在运行时并不存在。相反,您应该将两组模板放在WEB-INF下的不同目录下,然后在templateLoaderPaths中列出两个路径,与您一样。