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