[C#]NVelocity系列:NVelocity配置详解

VelocityEngine初始化前,可以通过ExtendedProperties配置NVelocity的运行环境参数,当执行 VelocityEngine的Init(ExtendedProperties)后,NVelocity会合并自定义配置和默认配置。 NVelocity在NVelocity.Runtime.RuntimeConstants中定义了默认配置项的名称,在内嵌资源文件 NVelocity.Runtime.Defaults.nvelocity.properties中定义了所有默认配置项的值。下面列出一些常用配置:

模板编码:

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 = NVelocity.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 = NVelocity.Runtime.Resource.ResourceManagerImpl          //管理器类名称
resource.manager.cache.class = NVelocity.Runtime.Resource.ResourceCacheImpl     //缓存器类名称

解析器池配置

parser.pool.class = NVelocity.Runtime.ParserPoolImpl     //解析池类名称
parser.pool.size = 40                                                  //初始大小

#evaluate配置

directive.evaluate.context.class = NVelocity.VelocityContext     //上下问类名称

可插入introspector配置

runtime.introspector.uberspect = NVelocity.Util.Introspection.UberspectImpl     //默认introspector类名称
 
在NVelocity中有的配置是可以定义多个的,比如资源加载器。注意一点在传入的实现类名称一定要采用:class fullname;assembly name格式,比如自定义了一个资源加载器EasyNet.Mvc.AssemblyResourceLoader,程序集名称为EasyNet.Mvc,那么应该如下示例定义:


VelocityEngine velocity = new VelocityEngine();
            ExtendedProperties props 
= new ExtendedProperties();
            
//定义资源加载器
            props.AddProperty(RuntimeConstants.RESOURCE_LOADER, "EasyNet.Mvc.AssemblyResourceLoader;EasyNet.Mvc");
            
//初始化
            velocity.Init(props);

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏