【问题标题】:Freemarker template loading from different modules从不同模块加载 Freemarker 模板
【发布时间】:2016-02-23 21:47:26
【问题描述】:

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

我有两个maven 项目:

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

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

例如,Freemarker 的想法是在“我的网站”中搜索登陆/登录,如果没有找到,则在“通用模板”登陆/登录中搜索。

根据freemarker template loader documentation,freemarker.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>

但我显然做错了什么,因为它不起作用:找不到通用模板的文件。

知道我怎样才能完成这项工作吗? (欢迎其他实现相同目标的方法)

如何调试它?

【问题讨论】:

  • 你成功了吗?

标签: java spring intellij-idea freemarker


【解决方案1】:

方案部分(包括: 之前的部分)是一些集成框架通过其自定义TemplateLoader-s 使用的东西,而另一些则没有。 FreeMarker 本身并不解释该方案。此外,Spring 对资源路径中的方案有自己的想法,这可能会干扰这种机制。

无论如何自定义事物,该方案都不应引用 Maven 模块名称,因为 Maven 模块在运行时并不真正存在。相反,您应该将这两组模板放在 WEB-INF 下的不同目录下,然后在 templateLoaderPaths 中列出这两个路径,与您所做的类似。

【讨论】:

    猜你喜欢
    • 2013-03-18
    • 2011-05-11
    • 2019-10-28
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多