首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring-boot-starter freemarker找不到模板

spring-boot-starter freemarker找不到模板
EN

Stack Overflow用户
提问于 2020-10-29 19:04:39
回答 1查看 923关注 0票数 0

在没有进一步配置的情况下使用spring-boot-starter-freemarker,我希望能够从默认模板路径(src/resources/tempaltes)加载模板(注意它是src/...而不是build/...)。

这里有这个文件:

代码语言:javascript
复制
src/resources/templates/emails/welcome.ftl

试图将其加载为模板:

代码语言:javascript
复制
// some service class
  @Autowired
  private Configuration freemarkerConfig;

  public void doStuff() {
    Template t = freemarkerConfig.getTemplate("emails/welcome.ftl");
    // ...
  }

此错误消息失败:

代码语言:javascript
复制
freemarker.template.TemplateNotFoundException: Template not found for name "emails/welcome.text.ftl".
The name was interpreted by this TemplateLoader: MultiTemplateLoader(loader1 = FileTemplateLoader(baseDir="/some/path/backend/build/resources/main/templates", canonicalBasePath="/some/path/backend/build/resources/main/templates/"), loader2 = ClassTemplateLoader(resourceLoaderClass=org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer, basePackagePath="" /* relatively to resourceLoaderClass pkg */)).

因此,配置似乎还不错,但它使用的不是src文件夹,而是build文件夹。通过./gradlew bootRun运行时,我们会看到错误。执行./gradlew build,然后执行./gradlew bootRun,就可以找到模板--因为它们现在在build文件夹中。但是对于开发来说,不需要完全重新构建是非常感激的。

因此,我知道我们现在可以手动配置freemarker从src文件夹加载,但这感觉很麻烦。

我是做错了还是这是预期的行为?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-29 20:17:23

您可以配置bootRun,以便从其源位置加载源。假设模板是主源集的一部分,即它们在src/main/resources中,则配置如下:

代码语言:javascript
复制
bootRun {
    sourceResources sourceSets.main
}

这是Spring的Gradle插件参考文档中的所述

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64597638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档