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的控制討論(http://hi.baidu.com/maomaoyusp/item/980a650836c29c7fbee97e22)
directive.foreach.counter.name
directive.foreach.counter.name屬性用於指定VTL標識符,用於#foreach指令的循環計數器名稱。當使用了前綴$時,這個標識符用作Velocity變量引用,它允許模板設計者訪問#foreach指令的當前反覆數(即循環數)。默認情況下,這個計數器從1開始,且每一次循環的增量爲1。directive. foreach.counter.name屬性的值默認爲velocityCount,其相應的變量引用爲$velocityCount。如果模板設計者想用引用名稱$my-Count來代替這個值,則可以爲該屬性賦值爲myCount。
directive.foreach.counter.initial.value
directive.foreach.counter.initial.value屬性指定了#foreach指令的循環計數器初始值,這個值通過循環計數器引用提供(見directive.foreach.counter.name屬性),作爲每一個後來反覆的起點,這個值將增加一個步長(At the beginning of each subsequent iteration, the value is incremented by one)。directive.foreach.counter.initial.value的默認值是1。熟悉的C++和Java loop循環的模板設計者或許更喜歡基於0的計數器,那麼你把這個屬性設置爲0即可。
directive.include.output.errormsg.start
directive.include.output.errormsg.start屬性指定了在(由非法輸入參數被傳遞到#include指令而產生的)錯誤信息之前的文本。比如錯誤輸入了一個未定義或不明確的(undefined)Velocity引用,將觸發這種錯誤信息。這個錯誤信息前綴通過定義這個屬性來指定。其默認值爲“<!– include error :”。
directive.include.output.errormsg.end
directive.include.output.errormsg.end屬性指定了跟隨在(由非法輸入參數被傳遞到#include指令而產生的)錯誤信息之後的文本。比如錯誤輸入了一個未定義或不明確的(undefined)Velocity引用,將觸發這種錯誤信息。這個錯誤信息後綴通過定義這個屬性來指定。其默認值爲“see error log –>”。
directive.parse.max.depth
directive.parse.max.depth屬性指定了#parse指令可以嵌套的最大深度。當值爲1時,從本質上已經禁用了#parse指令,當一個模板包含了#parse指令時,深度的值就已經爲1了,所以該值至少爲1。雖然該屬性的主要目的是爲了防止遞歸失控,但該深度限度也適用於普通不含遞歸的#parse嵌套。其默認值爲10。
Encoding
下面的屬性用於指定模板和數據的編碼(The following properties specify encodings to be associated with templates and data used by certain tools associated with the Velocity template engine)。
input.encoding
input.encoding屬性被用於指定模板引擎進行模板處理的編碼。一旦設定好後,所有的模板輸入都將轉換爲指定的編碼。默認值爲ISO-8859-1。所支持的編碼依賴於Java字符集。
output.encoding
output.encoding屬性被用於指定輸出流的編碼。這個不是多種用途的Velocity屬性,通常情況下,僅供VelocityServlet類和Anakia項目使用。普通情況下,在Writer被合併之前,編碼可以在Writer類實例的初始化時直接指定。其默認值爲ISO-8859-1。
Logging
下面的屬性將影響Velocity日誌系統的行爲。
runtime.log
runtime.log屬性用於指定Velocity日誌文件的路徑。默認情況下,這個路徑被指定爲應用程序的相對路徑,這個設置可以通過file.resource.loader.path屬性(下面將要討論的)定義來修改。runtime.log屬性的默認值是velocity.log。通過前面的示例,對這個文件你應該比較熟悉了,每一次運行Velocity應用程序裏,就會產生這個文件。
runtime.log.logsystem
runtime.log.logsystem屬性定義了一個Velocity將要傳遞(hand off/手傳手?)日誌任務的對象,用於Velocity。爲了使用這個對象,你需要有一個實現org.apache.velocity.runtime. log.LogSystem接口的類。這個屬性主要用於當Velocity的日誌需要與定製應用程序日誌類結合的情況下。該屬性沒有默認值,同時要注意,該屬性值最好是一個對象(當然也可以用字符串),它不可以被直接指定爲配置文件或Java屬性對象。
runtime.log.logsystem.class
runtime.log.logsystem.class屬性用於指定運行時實例化Velocity日誌服務的類。該屬性的值可以由逗號分隔的類名稱列表組成。運行時引擎按列表裏的名稱次序依次查找匹配的類。第一個匹配的類將用於Velocity日誌的實例化。默認值爲“org.apache.velocity. runtime.log.AvalonLogSystem, org.apache.velocity.runtime.log.SimpleLog4J logSystem”。日誌功能也可以通過把該屬性設置爲org.apache.velocity. runtime.log.NullLogSystem而禁用。
runtime.log.error.stacktrace
runtime.log.error.stacktrace屬性用於指定當Velocity運行時引擎記錄錯誤日誌時,是否允許產生和日誌堆棧跟蹤信息(既是否產生堆棧的跟蹤日誌信息)。雖然它自己支持這個功能,但其關聯的功能仍舊沒有實現(Although support for the property itself exists, the associated functionality is not yet implemented)。默認值爲false。
runtime.log.warn.stacktrace
runtime.log.warn.stacktrace屬性用於指定當Velocity運行時引擎日誌一個警告時,是否允許產生和日誌堆棧跟蹤信息。雖然它自己支持這個功能,但其關聯的功能仍舊沒有實現(Although support for the property itself exists, the associated functionality is not yet implemented)。默認值爲false。
runtime.log.info.stacktrace
runtime.log.info.stacktrace屬性用於指定當Velocity運行時引擎日誌一個報告信息時,是否允許產生和日誌堆棧跟蹤信息。雖然它自己支持這個功能,但其關聯的功能仍舊沒有實現(Although support for the property itself exists, the associated functionality is not yet implemented)。默認值爲false。
runtime.log.invalid.references
runtime.log.invalid.references屬性用於指定是否要對模板裏的非法Velocity引用錯誤進行日誌。如果值爲true,非法引用將產生一個警告信息。如果值爲false,將忽略非法引用的信息。默認值爲true。
鏈接: http://fcjblog.com/the-java-velocity-velocity-and-configuration-in-detail