【问题标题】:Freemarker Set checkTemplateLocation via JavaFreemarker 通过 Java 设置 checkTemplateLocation
【发布时间】:2018-02-08 00:25:54
【问题描述】:

我有一个 Spring Boot Web 应用程序。我使用 Freemarker 作为我的 ViewResolver,并通过 java 配置所有内容。我在日志文件中收到警告:

2018-02-07 19:00:28,592 WARN  o.s.b.a.f.FreeMarkerAutoConfiguration - 
Cannot find template location(s): [classpath:/templates/] 
(please add some templates, check your FreeMarker configuration, or set spring.freemarker.checkTemplateLocation=false)

我的模板位于外部位置,因此警告是正确的。

我的配置是这样设置的:

@Bean 
public FreeMarkerConfigurer freemarkerConfig() { 
    FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); 
    freeMarkerConfigurer.setTemplateLoaderPath(freeMarkerConfiguration.getBasePath());
    return freeMarkerConfigurer; 
}

templateLoaderPath 是一个外部文件:位置并且确实有模板。事实上,一切正常,我只是想从我的日志文件中获取警告,但已经把我带入了一个我现在需要弄清楚的兔子洞。 所以我像这样将该属性添加到我的配置中:

@Bean 
public FreeMarkerConfigurer freemarkerConfig() { 
    FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); 
    Properties props = new Properties();
    props.setProperty("checkTemplateLocation", "false");
    freeMarkerConfigurer.setTemplateLoaderPath(freeMarkerConfiguration.getBasePath());
    freeMarkerConfigurer.setFreemarkerSettings(props);
    return freeMarkerConfigurer; 
}

这是抛出一个错误:

 Unknown FreeMarker configuration setting: "checkTemplateLocation"

我尝试过“freemarker.checkTemplateLocation”和“spring.freemarker.checkTemplateLocation”,但都没有成功。

如何通过 Java 配置设置此设置?

【问题讨论】:

    标签: java spring freemarker


    【解决方案1】:

    我认为您将与 Spring 无关的 FreeMarker 配置设置与 Spring 的配置属性混淆了。 spring.freemarker.checkTemplateLocation 是 Spring 特定的东西,例如,您可以将其放入您的 application.properties。 FreeMarker 配置设置由 FreeMarker 定义,注意它们不叫“属性”,而是“设置”;也许混淆来自您使用java.util.Properties 对象来指定它们。

    当然,最好的办法是消除警告的原因...您的setTemplateLoaderPath 呼叫发生的时间晚于警告记录吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      相关资源
      最近更新 更多