java - 配置 Velocity 以读取类路径之外的模板文件

标签 java spring templates velocity

我正在尝试将 Velocity 配置为从文件系统读取模板文件,而不是从类路径读取模板文件。如果我将velocityEngine配置为:

,我可以让它从类路径中读取模板文件
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean" 
          p:resourceLoaderPath="classpath:/com/myapp/test" 
          p:preferFileSystemAccess="false"/>  

并将templatefile.vm放入com.myapp.test包中。

我如何更改上述内容,以便我可以将模板文件放在文件系统中的任何位置并访问它。我尝试过这个,但没有成功。

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean" 
          p:resourceLoaderPath="c:\home\users\me\app\templates" 
          p:preferFileSystemAccess="true"/> 

我尝试谷歌看看是否能找到解决方案,但大多数示例都是针对 Spring MVC 配置的。我正在使用独立的 Spring 应用程序。

谢谢

最佳答案

尝试使用 file: 指定文件名,如下所示:

<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean" 
          p:resourceLoaderPath="file://c:\home\users\me\app\templates" 
          p:preferFileSystemAccess="true"/> 

这就是为什么我认为它应该有效。根据this document当您将 PreferFileSystemAccess 设置为 true 时,它会开始使用 SpringResourceLoaderSpringResourceLoader 非常通用,这里有一个nice overview .

<小时/>

还有this可能相关。

关于java - 配置 Velocity 以读取类路径之外的模板文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657689/

相关文章:

c++ - 类模板需要模板参数列表

c++ - 在 C++ 中分离模板接口(interface)和实现

java - 效率 : switch statements over if statements

Winforms 应用程序模板

java - 如何使用机器人类在 Selenium 中基于 webelement 而不是 getlocation 的 xy 坐标执行 mousemove?

java - 无法通过 BasicAuth 登录

java获取类包的名称

java - 当查询方法的同一字段名中有两个连续大写字母时,spring jpa无法定位该字段

Java:在不实例化新列表的情况下深度复制列表条目

java - 无法解析引用本地 ejb-ref