java - 从不同模块加载 Freemarker 模板

标签 java spring intellij-idea freemarker

我正在尝试使用 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>

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

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

如何调试它?

最佳答案

方案部分(: 之前的部分)是一些集成框架通过其自定义 TemplateLoader 使用的内容,而其他集成框架则不然。解释该方案不是由 FreeMarker 本身完成的。此外,Spring 对于资源路径中的方案有自己的想法,这可能会干扰此机制。

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

关于java - 从不同模块加载 Freemarker 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35588895/

相关文章:

spring - 在 Spring Batch 中,是否可以配置多个 JdbcBatchItemWriter 并行写入?

git - GitHub 上托管的 Intellij 项目显示为颠覆项目?

java - 在选定执行时跳过父类中的 gson 字段

java - .sql 文件中应包含冒号

spring - 使用 JpaRepository 的动态搜索查询

java - Intellij 是否可以显示静态变量的值?

intellij-idea - 如何在 IntelliJ 中导出所需的插件功能?

java - 如何通过 PHP 代码运行 shell 命令?

Java HttpRequest 超时意外抛出 HttpConnectTimeoutException

java - hashcode() 和 equals() 方法