velocity.properties配置说明
Posted 石工记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了velocity.properties配置说明相关的知识,希望对你有一定的参考价值。
一、格式
1.Runtime Log
runtime.log = velocity.log
用以指定 Velocity 运行时日志文件的路劲和日志文件名,如不是全限定的绝对路径,系统会认为想对于 当前目录.
runtime.log.logsystem
这个参数没有默认值,它可指定一个实现了 interface org.apache.velocity.runtime.log.LogSystem.的自定义日志处理对象给 Velocity。这就方便将 Velocity 与你己有系统的日志机制统一起来
runtime.log.logsystem.class = org.apache.velocity.runtime.log.AvalonLogSystem
上面这行,是一个示例来指定一个日志记录器.
runtime.log.error.stacktrace = false runtime.log.warn.stacktrace = false runtime.log.info.stacktrace = false 这些是错误消息跟踪的开关.将会生成大量、详细的日志内容输出.
runtime.log.invalid.references = true
当一个引用无效时,打开日志输出. 在生产系统运行中,这很有效,也是很有用的调试工具.
2.字符集编码问题
input.encoding = ISO-8859-1
输出模板的编码方式 (templates). 你可选择对你模板的编码方式,如 UTF-8.GBK.
output.encoding = ISO-8859-1
VelocityServlet 对输出流(output streams)的编码方式.
3.#foreach() Directive
directive.foreach.counter.name = velocityCount
在模板中使用#foreach() 指令时,这里设定的字符串名字将做为 context key 代表循环中的计数器名, 如以上设定,在模板中可以通过 $velocityCount 来访问.
directive.foreach.counter.initial.value = 1
#foreach() 中计数器的起始值.
4.#include() and #parse() Directive
directive.include.output.errormsg.start =
directive.include.output.errormsg.end =
使用#include()时,定义内部流中开始和结束的错误消息标记,如果两者都设这屯,错误消息将被输出到 流中'.但必须是两都定义.
directive.parse.maxdepth = 10 定义模板的解析深度,当在一个模板中用#parse()指示解析另外一个模板时,这个值可以防止解析时出现 recursion 解析.
5.资源管理
resource.manager.logwhenfound = true
定义日志中的 'found' 务目开关.当打开时,如 ResourceManager 第一次发现某个资源时, the first time, theresource name and classname of the loader that found it will be noted in the runtime log.
resource.loader = <name> (default = File)
(可以有多个以.号分开的值),可以理解为指定资源文件的扩展名.
<name>.loader.description = Velocity File Resource Loader
描述资源装载器名字.
<name>.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader实现的资源装载器的类名. 默认的是文件装载器.
<name>.resource.loader.path = .
Multi-valued key. Will acceptCSV for value. 资源位置的根目录. 当前配置会使用FileResourceLoader and JarResourceLoader 遍历目录下的所有文件以查找资源.
<name>.resource.loader.cache = false 控制装载器是否对文件进行缓存.默认不存是为了方便开发和调试. 在生产环境布署(productiondeployment)时可设为 true 以提高性能, 这里参数 modificationCheckInterval 应设为一个有效值—以决定多久 reload 一次.
<name>.resource.loader.modificationCheckInterval = 2
当模把caching 打开时,这个以秒为单位的值指示系统多久检测一次模板是否己修改以决定是否需要,如 果设为 <= 0, Velocity 将不做检测.
FileResourceLoader 的默认参数完整示例:
resource.loader = file
file.resource.loader.description = Velocity File Resource Loader
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoaderfile.resource.loader.path = .
file.resource.loader.cache = falsefile.resource.loader.modificationCheckInterval = 2
6.Velocima cro(宏配置)
velocimacro.library = VM_global_library.vm
Multi-valued key. Will acceptCSV for value.当 Velocity engine 运行时,要被载入的含有宏代码库的文件名. 所有模板都可访问宏(Velocimacros ). 这个文件位置在相对于资源文件的根目录下.
velocimacro.permissions.allow.inline = true
Determines of thedefinition of new Velocimacros via the#macro() directive in templates
isallowed,定义在模板中是否可用#macro()指令定义一个新的宏. 默认为 true,意味所有模板都可定义
new Velocimacros. 注意,这个设定,如模板中的有可能替换掉全局的宏定义.
velocimacro.permissions.allow.inline.to.replace.global = false
控制用户定义的宏是否可以可以替换 Velocity 的宏库.
velocimacro.permissions.allow.inline.local.scope = false
控制模板中的宏的专有命名空间.When true, 一个模板中的 #macro() directive 只能被定义它的模板
访问. 这意味者所有的宏都不能共想了,当然也不会互想扰乱、替换了.
velocimacro.context.localscope = false 控制 Velocimacro 的引用访问(set/get)是涉及到Context
范围还是仅在当前的 Velocimacro 中.
velocimacro.library.autoreload = false
控制宏库是否自动载入. 设为 true 时,源始的 Velocimacro 将根据是否修改过而决定是否需要 reLoad, 可在调试时很方便,不需重启你的服务器,如用参数 file.resource.loader.cache = false 的设置一样, 主要是为方便开发调试用.
7.语义更改
runtime.interpolate.string.literals = true
Controls interpolation mechanism of VTL String Literals. Note that a VTL StringLiteral is specifically astring using doublequotes that is used in a #set() statement, a method
call of a reference, aparameter to a VM, or as an argument to a VTL directive in general. See the VTL reference for further information.
8.运行时配置
parser.pool.size = 20
控制 Velocity启动是需要创建并放到池中预备使用的模 板解析器的个数 ----这只是预装 . 默认的 20 个对一般用户来说足够了. 即使这个值小了,Velocity 也会运行时根据系统需要动态增加(但增加的不会装
入池中). 新增时会在日志中输出信息
二、案例说明:
[size=medium][size=small]velocity配置详解
在velocity二方包中有一个velocity.properties
文件定义了velocity的配置信息(位于org.apache.velocity.runtime.defaults package下,org.apache.velocity.runtime.RuntimeConstants中定义了key值)
#模板编码:
input.encoding=ISO-8859-1 //模板输入编码
output.encoding=ISO-8859-1 //模板输出编码
#foreach配置
directive.foreach.counter.name = velocityCount //计数器名称
directive.foreach.counter.initial.value = 1 //计数器初始值
directive.foreach.maxloops = -1 //最大循环次数,-1为默认不限制 directive.foreach.iterator.name = velocityHasNex //迭代器名称
#set配置
directive.set.null.allowed = false //是否可设置空值
#include配置
directive.include.output.errormsg.start = <!-- include error : //错误信息提示开始字符串
directive.include.output.errormsg.end = see error log --> //错误信息提示结束字符串
#parse配置
directive.parse.max.depth = 10 //解析深度
模板加载器配置
resource.loader = file //模板加载器类型,默认为文件,可定义多个
file.resource.loader.description = Velocity File Resource Loader //加载器描述
file.resource.loader.class = Velocity.Runtime.Resource.Loader.FileResourceLoader //加载器类名称
file.resource.loader.path = . //模板路径
file.resource.loader.cache = false //是否启用模板缓存
file.resource.loader.modificationCheckInterval = 2 //检查模板更改时间间隔
宏配置
velocimacro.permissions.allow.inline = true //是否可以行内定义
velocimacro.permissions.allow.inline.to.replace.global = false //是否可以用行内定义代替全局定义
velocimacro.permissions.allow.inline.local.scope = false //行内定义是否只用于局部
velocimacro.context.localscope = false //宏上下文是否只用于局部
velocimacro.max.depth = 20 //解析深度
velocimacro.arguments.strict = false //宏参数是否启用严格模式
资源管理器配置
resource.manager.class = Velocity.Runtime.Resource.ResourceManagerImpl //管理器类名称
resource.manager.cache.class = Velocity.Runtime.Resource.ResourceCacheImpl //缓存器类名称
解析器池配置
parser.pool.class = Velocity.Runtime.ParserPoolImpl //解析池类名称
parser.pool.size = 40 //初始大小
#evaluate配置
directive.evaluate.context.class = Velocity.VelocityContext //上下问类名称
可插入introspector配置
runtime.introspector.uberspect = Velocity.Util.Introspection.UberspectImpl //默认introspector类名称
更详细的可以参考:
velocity.properties
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this
work for
additional information
# regarding copyright ownership. The ASF licenses this
file
# to you under the Apache License, Version 2.0 (the
# "License"
); you may not use this
file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for
the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
# R U N T I M E L O G
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
# default
LogChute to use: default
: AvalonLogChute, Log4JLogChute, CommonsLogLogChute, ServletLogChute, JdkLogChute
# ----------------------------------------------------------------------------
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
# ---------------------------------------------------------------------------
# This is the location of the Velocity Runtime
log.
# ----------------------------------------------------------------------------
runtime.log = velocity.log
# ----------------------------------------------------------------------------
# This controls whether invalid references are logged.
# ----------------------------------------------------------------------------
runtime.log.invalid.references = true
# ----------------------------------------------------------------------------
# T E M P L A T E E N C O D I N G
# ----------------------------------------------------------------------------
input.encoding=ISO-8859-1
output.encoding=ISO-8859-1
# ----------------------------------------------------------------------------
# F O R E A C H P R O P E R T I E S
# ----------------------------------------------------------------------------
# These properties control how the counter is accessed in the #foreach
# directive. By default
the reference $velocityCount and $velocityHasNext
# will be available in the body of the #foreach directive.
# The default
starting value for
$velocityCount is 1.
# ----------------------------------------------------------------------------
directive.foreach.counter.name = velocityCount
directive.foreach.counter.initial.value = 1
directive.foreach.maxloops = -1
directive.foreach.iterator.name = velocityHasNext
# ----------------------------------------------------------------------------
# S E T P R O P E R T I E S
# ----------------------------------------------------------------------------
# These properties control the behavior of #set.
# For compatibility, the default
behavior is to disallow setting a reference
# to null
. This default
may be changed in a future
version.
# ----------------------------------------------------------------------------
directive.set.null
.allowed = false
# ----------------------------------------------------------------------------
# I F P R O P E R T I E S
# ----------------------------------------------------------------------------
# These properties control the behavior of #if
# Default behavior is to check return
value of toString() and treat an object
# with toString() that returns null
as null
. If all objects have toString()
# methods that never return
null
, this
check is unnecessary and can be disabled
# to gain performance. In Velocity 1.5, no such null
check was performed.
directive.if
.tostring.nullcheck = true
# ----------------------------------------------------------------------------
# I N C L U D E P R O P E R T I E S
# ----------------------------------------------------------------------------
# These are the properties that governed the way #include"d content
# is governed.
# ----------------------------------------------------------------------------
directive.include.output.errormsg.start = <!-- include error :
directive.include.output.errormsg.end = see error log -->
# ----------------------------------------------------------------------------
# P A R S E P R O P E R T I E S
# ----------------------------------------------------------------------------
directive.parse.max.depth = 10
# ----------------------------------------------------------------------------
# T E M P L A T E L O A D E R S
# ----------------------------------------------------------------------------
#
#
# ----------------------------------------------------------------------------
resource.loader = file
file.resource.loader.description = Velocity File Resource Loader
file.resource.loader.class = org.apache.velocity.runtime.resource.loader.FileResourceLoader
file.resource.loader.path = .
file.resource.loader.cache = false
file.resource.loader.modificationCheckInterval = 2
# ----------------------------------------------------------------------------
# VELOCIMACRO PROPERTIES
# ----------------------------------------------------------------------------
# global : name of default
global library. It is expected to be in the regular
# template path. You may remove it (either the file or this
property) if
# you wish with no harm.
# ----------------------------------------------------------------------------
# velocimacro.library = VM_global_library.vm
velocimacro.permissions.allow.inline = true
velocimacro.permissions.allow.inline.to.replace.global = false
velocimacro.permissions.allow.inline.local.scope = false
velocimacro.context.localscope = false
velocimacro.max.depth = 20
# ----------------------------------------------------------------------------
# VELOCIMACRO STRICT MODE
# ----------------------------------------------------------------------------
# if
true
, will throw
an exception for
incorrect number
# of arguments. false
by default
(for
backwards compatibility)
# but this
option will eventually be removed and will always
# act as if
true
# ----------------------------------------------------------------------------
velocimacro.arguments.strict = false
# ----------------------------------------------------------------------------
# STRICT REFERENCE MODE
# ----------------------------------------------------------------------------
# if
true
, will throw
a MethodInvocationException for
references
# that are not defined in the context, or have not been defined
# with a #set directive. This setting will also throw
an exception
# if
an attempt is made to call a non-existing property on an object
# or if
the object is null
. When this
property is true
then property
# "directive.set.null
.allowed" is also set to true
.
# ----------------------------------------------------------------------------
runtime.references.strict = false
# ----------------------------------------------------------------------------
# INTERPOLATION
# ----------------------------------------------------------------------------
# turn off and on interpolation of references and directives in string
# literals. ON by default
# ----------------------------------------------------------------------------
runtime.interpolate.string.literals = true
# ----------------------------------------------------------------------------
# RESOURCE MANAGEMENT
# ----------------------------------------------------------------------------
# Allows alternative ResourceManager and ResourceCache implementations
# to be plugged in.
# ----------------------------------------------------------------------------
resource.manager.class = org.apache.velocity.runtime.resource.ResourceManagerImpl
resource.manager.cache.class = org.apache.velocity.runtime.resource.ResourceCacheImpl
# ----------------------------------------------------------------------------
# PARSER POOL
# ----------------------------------------------------------------------------
# Selects a custom factory class for
the parser pool. Must implement
# ParserPool. parser.pool.size is used by the default
implementation
# ParserPoolImpl
# ----------------------------------------------------------------------------
parser.pool.class = org.apache.velocity.runtime.ParserPoolImpl
parser.pool.size = 20
# ----------------------------------------------------------------------------
# EVENT HANDLER
# ----------------------------------------------------------------------------
# Allows alternative event handlers to be plugged in. Note that each
# class property is actually a comma-separated list of classes (which will
# be called in order).
# ----------------------------------------------------------------------------
# eventhandler.referenceinsertion.class =
# eventhandler.nullset.class =
# eventhandler.methodexception.class =
# eventhandler.include.class =
# ----------------------------------------------------------------------------
# EVALUATE
# ----------------------------------------------------------------------------
# Evaluate VTL dynamically in template. Select a class for
the Context
# ----------------------------------------------------------------------------
directive.evaluate.context.class = org.apache.velocity.VelocityContext
# ----------------------------------------------------------------------------
# PLUGGABLE INTROSPECTOR
# ----------------------------------------------------------------------------
# Allows alternative introspection and all that can of worms brings.
# ----------------------------------------------------------------------------
runtime.introspector.uberspect = org.apache.velocity.util.introspection.UberspectImpl
# ----------------------------------------------------------------------------
# SECURE INTROSPECTOR
# ----------------------------------------------------------------------------
# If selected, prohibits methods in certain classes and packages from being
# accessed.
# ----------------------------------------------------------------------------
introspector.restrict.packages = java.lang.reflect
# The two most dangerous classes
introspector.restrict.classes = java.lang.Class
introspector.restrict.classes = java.lang.ClassLoader
# Restrict these for
extra safety
introspector.restrict.classes = java.lang.Compiler
introspector.restrict.classes = java.lang.InheritableThreadLocal
introspector.restrict.classes = java.lang.Package
introspector.restrict.classes = java.lang.Process
introspector.restrict.classes = java.lang.Runtime
introspector.restrict.classes = java.lang.RuntimePermission
introspector.restrict.classes = java.lang.SecurityManager
introspector.restrict.classes = java.lang.System
introspector.restrict.classes = java.lang.Thread
introspector.restrict.classes = java.lang.ThreadGroup
introspector.restrict.classes = java.lang.ThreadLocal[/size][/size]
以上是关于velocity.properties配置说明的主要内容,如果未能解决你的问题,请参考以下文章