Spring+Velocity中模板路径的问题

在Spring中使用Velocity进行视图渲染的时候需要注意一个路径的设置问题。Spring本身提供了一个用于对Velocity进行设置的类,我们做如下设置:

  1.  <bean id="velocityConfig"class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
  2.          <property name="configLocation" value="/WEB-INF/velocity.properties" />
  3.          <property name="resourceLoaderPath" value="/WEB-INF/templates" />
  4.      bean>

使用configLocation属性设置了velocity配置文件的路径及文件名,而resourceLoaderPath设置了模板文件所在的位置。这里我们看到,所有的设置路径都是基于网站根目录的。

这个时候对于velocity.properties中用于设置宏文件的velocimacro.library选项而言,他所对应的目录就是前面resourceLoaderPath中设置的目录了,比如我们可以设置如下:

  1. velocimacro.library = macro.vm

并且对于模板文件中#parse指令所包含的文件也是基于resourceLoaderPath中所设置的目录。

如果我们将resourceLoaderPath设置为网站跟目录,而模板文件放在了/WEB-INF/template下,这个时候velocimacro.library和#parse指令所包含的文件路径就是基于网站根目录了,例如有个section.vm文件放在了/WEB-INF/template目录下,这个时候在模板文件中必须写成#parse("/WEB-INF/template/section.vm")才可以,可以看出这样非常的麻烦。

因此我们不能想当然的将resourceLoaderPath设置为网站的根目录,而是直接指向模板文件所在的目录。或许你认为我这么说有些可笑,但是有的时候我们往往在这些看似不经意的问题上浪费时间。

你可能感兴趣的:(Spring+Velocity中模板路径的问题)