Spring Freemarker 配置,找不到模板
Posted
技术标签:
【中文标题】Spring Freemarker 配置,找不到模板【英文标题】:Spring Freemarker Configuration, Template Not Found 【发布时间】:2011-07-28 17:12:56 【问题描述】:我有一个 Spring/JSF Web 应用程序,它依赖于使用 Freemarker 模板的模块。这是我为集成所做的:
我将 applicationContext-freemarker-module.xml 导入到 applicationContext.xml 我将配置 bean 添加到 applicationContext-freemarker-module.xml 中,如下所示。
<bean id="freemarkerConfiguration" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="classpath*:/"/>
</bean>
我把我的模板放到 freemarker 模块的 src/main/resources 目录下。 我正在阅读如下模板:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-freemarker-module.xml");
Configuration templateConfig = (Configuration) context.getBean("freemarkerConfiguration");
Template template = templateConfig.getTemplate("template.ftl");
现在我为 templateLoaderPath 属性尝试了很多值,但我总是得到“找不到模板”。例外。
Freemarker 模块的 JAR 如下所示
template.ftl
applicationContext-freemarker-module.xml
com/.../ (classes)
META-INF
我应该把模板文件放在哪里,我应该为 templateLoaderPath 值设置什么? 我不明白为什么找不到“template.ftl”。我正在尝试为多个小时设置正确的值。我尝试了各种路径配置都没有成功。
非常感谢您的帮助,
【问题讨论】:
你试过<property name="templateLoaderPath" value="classpath:/"/>
吗?如果 .ftl 文件位于 jar 的根目录中,这应该可以工作...
是的,我已经尝试过了,但仍然找不到 .ftl 文件。非常感谢您的回复。
【参考方案1】:
像这样使用一些bean:
<bean
class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
<property name="templateLoaderPath" value="classpath:META-INF/freemarker/" />
<property name="preferFileSystemAccess" value="false" />
</bean>
希望对您有所帮助。
【讨论】:
注解中这个配置的等价物是什么?【参考方案2】:确保您有以下内容
在您的 *-action servlet xml FreeMarkerConfigurationFactoryBean 配置中,“preferFileSystemAccess”属性设置为“false”
<property name="templateLoaderPath" value="classpath*:/"/> should be
<property name="templateLoaderPath" value="classpath:/"/>
在 freemarker 中,模板加载器会尝试匹配字符串 "classpath:" ,而不是 "classpath*:"
你有 WEB-INF/lib 文件夹下的 JAR 文件。
最后,你的模板文件在jar文件的根目录下。
【讨论】:
对我来说情况略有不同:我有“classpath:templates”,但它在 Jetty 上不起作用,将其更改为“classpath:templates/”,它工作正常! 你好 Jay,如果我的模板在依赖 jar 下,我该如何加载模板。我使用 classpath*:/mailer_templates 但它不起作用): @Felix:检查上面提到的第二点。类路径不应有 *.以上是关于Spring Freemarker 配置,找不到模板的主要内容,如果未能解决你的问题,请参考以下文章
下拉框 - 从 Spring MVC 模型/上下文到使用 freemarker 形成