java - 几个 jar 中的 freemarker 模板

标签 java spring freemarker

如何配置 freemarker 在多个 jar 中搜索模板?有 Spring 。

<!-- freemarker config -->
<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPaths" value="classpath:/freemarker/" />
</bean>

一个 war 文件(用于部署)和一个 jar 文件(在依赖项中)。

一战

/freemarker/simple.ftl

两个.jar

/freemarker/test.ftl

工作。

ModelAndView mav = new ModelAndView();
mav.setViewName("simple");

不工作。找不到 test.ftl

ModelAndView mav = new ModelAndView();
mav.setViewName("test");

如果设置为:

<property name="templateLoaderPaths" value="classpath:/freemarker/,classpath:/freemarker2/" />

一战

/freemarker/simple.ftl

两个.jar

/freemarker2/test.ftl

工作。

ModelAndView mav = new ModelAndView();
mav.setViewName("simple");

工作。

ModelAndView mav = new ModelAndView();
mav.setViewName("test");

还有问题!如何配置 freemarker 以在同一路径 (classpath:/freemarker/) 中搜索多个 jars(wars)?

最佳答案

我找到了解决方案!关闭 preferFileSystemAccess 以始终通过 SpringTemplateLoader 加载。

    <!-- freemarker config -->
<bean id="freemarkerConfig"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPaths" value="classpath:/freemarker/" />
    <property name="preferFileSystemAccess" value="false" />
</bean>

public void setPreferFileSystemAccess(boolean preferFileSystemAccess)

Set whether to prefer file system access for template loading. File system access enables hot detection of template changes.

If this is enabled, FreeMarkerConfigurationFactory will try to resolve the specified "templateLoaderPath" as file system resource (which will work for expanded class path resources and ServletContext resources too).

Default is "true". Turn this off to always load via SpringTemplateLoader (i.e. as stream, without hot detection of template changes), which might be necessary if some of your templates reside in an expanded classes directory while others reside in jar files.

关于java - 几个 jar 中的 freemarker 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870750/

相关文章:

java - 如何从 Temporal 获取 TimeZone?

java - Android 缩放动画使用不正确的坐标

Java 套接字 : DataOutputStream or OutputStream?

Java Spring Freemarker 模板国际化

regex - 如何在 Freemarker 中使用正则表达式 (\b,\w)?

java - 在两个排序列表中查找匹配项比使用 for 循环更好的方法?

java - spring jdbc连接远程mysql失败,而localhost正常

java - 在 Spring Boot 中使用 application.yml 配置嵌入式 Tomcat 的日志记录

java - 如何使用 JASIG SSO 同时验证两个客户端

java - 在 Liferay 显示模板中获取和渲染文档图像