velocity.properties配置文件

Velocity支持通过配置文件修改引擎的一些默认行为。实际上,velocity-1.7.jarorg.apache.velocity.runtime.defaults路径下提供了一个默认的配置文件velocity.properties,同目录下的directive.properties定义的是velocity的常用指令(如#set等),我们可以打开观看其具体实现,这里不多做解释。在自定义配置文件时,我们可以基于默认配置文件velocity.properties作为参考。

添加配置文件

以JavaWeb工程为例,我们可以在web.xml中对org.apache.velocity.tools.view.VelocityViewServlet加一个参数指定velocity.properties的路径,下面是一个例子。

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">

  <display-name>Demo VM</display-name>
   <servlet>
      <servlet-name>velocity</servlet-name>
      <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class>
      <init-param>
         <param-name>org.apache.velocity.properties</param-name>
         <param-value>/WEB-INF/velocity.properties</param-value>
      </init-param>
   </servlet>
   <servlet-mapping>
      <servlet-name>velocity</servlet-name>
      <url-pattern>*.vm</url-pattern>
   </servlet-mapping>
</web-app>

VelocityViewServlet拦截到对.vm的请求时就会自动加载此配置文件,基于自定义配置初始化模板引擎和velocity上下文。这里我们主要了解几个重要的配置,所有配置的详细注释均可在velocity-1.7.jar内默认配置文件中找到。

解决乱码

如果不配置Velocity的编码,它将使用默认的ISO-8859-1,这通常不是我们想要的结果,我们可以在velocity.properties中进行编码的配置。

input.encoding=utf-8
output.encoding=utf-8

这样配置后,Velocity就可以在页面正常输出中文了。如果在实际使用中,配置后依然无法正常输出中文,则应考虑HTTP请求、数据库等部分是否正确配置。

foreach计数器配置

我们可以对foreach迭代的计数器变量名称和判断迭代是否完成的变量名称进行配置,还可以对计数器初始值和最大值进行配置。

directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 1
directive.foreach.maxloops = -1
directive.foreach.iterator.name = velocityHasNext

#parse()解析深度

默认配置文件中定义了一个解析深度。这个通常不需更改也几乎不会用到,但一旦遇到超过解析深度的情况,我们应该知道这个配置的存在。

directive.parse.max.depth = 10

宏定义相关

配置文件中可以指定一个宏定义库,以及宏定义的嵌套深度。

velocimacro.library = VM_global_library.vm
velocimacro.max.depth = 20

启用严格模式

可以根据个人习惯设定,具体可以参阅官方User Guide,这里不作介绍。

velocimacro.arguments.strict = false

日志

运行velocity引擎我们会发现多出一个velocity.log文件,这个就是velocity引擎的运行日志,它的默认文件名为velocity.log。关闭日志只需将runtime.log.logsystem.class设定为org.apache.velocity.runtime.log.NullLogChute即可。

runtime.log.logsystem.class = org.apache.velocity.runtime.log.AvalonLogChute,org.apache.velocity.runtime.log.Log4JLogChute,org.apache.velocity.runtime.log.CommonsLogLogChute,org.apache.velocity.runtime.log.ServletLogChute,org.apache.velocity.runtime.log.JdkLogChute

runtime.log = velocity.log
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap