【JAVA& Velocity】velocity配置詳解

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章