如何使用 spring org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean 为 FreeMarker 模板加载嵌套文件夹

How can i load nested folders for FreeMarker template using spring org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean

您好,我需要为不同的实体创建 ftl,

我想从嵌套文件夹加载 ftl,就像所有真实的 ftl 一样,应该在 A 文件夹中,然后所有宏都在宏文件夹中。

<bean id="freeMarkerConfigurationFactory" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
    <property name="templateLoaderPath" value="classpath:freemarker/Account/"/>
    <property name="preferFileSystemAccess" value="false"/>
</bean>

这不是 working.Using spring 4

<bean id="freeMarkerConfigurationFactory" class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
    <property name="templateLoaderPath"> 
        <value> "classpath:freemarker/Account/" , "classpath:freemarker/Macro/"</value>
    </property>
    <property name="preferFileSystemAccess" value="false"/>
</bean>

同样在调试之后 spring class

public void setTemplateLoaderPath(String templateLoaderPath) {
    this.templateLoaderPaths = new String[] {templateLoaderPath};
}

templateLoaderPath 的行为类似于单个字符串,而不是数组。

你需要设置templateLoaderPaths属性(注意最后的s),而不是templateLoaderPath

我相信 Spring 语法将是(尚未测试...):

<property name="templateLoaderPaths"
          values="classpath:freemarker/Account/,classpath:freemarker/Macro/"
/>

或更长的形式:

<property name="templateLoaderPaths">
  <array>
    <value>classpath:freemarker/Account/</value>
    <value>classpath:freemarker/Macro/</value>
  </array>
</property>