天天看點

NVelocity的宏使用

一、NVelocity使用參數

 示例: 

  1.建立宏

   #macro( test $range $arrayList )

    ...

   #end

  2.調用宏

  #test([-9,-1] ["favorite", "color"])

 通過以上示例,你隻需要一個為每一個需要傳遞的參數提供了名稱的#macro指令,這些參數用空格進行分隔。如上例中#macro( test $range $arrayList )“test”是宏名,$range $arrayList是參數。用"#"+宏名(參數1 參數2...)來調用宏。

二、NVelocity遞歸調用

 嵌套,最簡單的情況就是在NVelocity 中用到macro裡調用另外一個macro,這是在實際代碼開發中使用得最頻繁的一種。遞歸,是一種特殊類型的嵌套,它是在NVelocity中的macro裡調用自身,但這種情況并不太常見。

 #macro( recurs $depth )

  進入第 $depth 層<br/>

  #set( $depth = $depth - 1 )

  #if ( $depth > 0 )

   #recurs( $depth )

  #end

  #set( $depth = $depth + 1 )

 #end

 #recurs( 3 )

 執行結果:

   進入第 3 層

   進入第 2 層

   進入第 1 層

 注:在遞歸調用時,注意通常不要把一個對象的屬性傳為參數遞歸調用,上例中,如果$depth是一個對象的話,那麼用#recurs( $depth.attribute)話,模闆輸出時候往往有問題,而且又查不出來,這裡記錄一下,忘以後不要出現這樣的錯誤。究其原因,我想是由于是object類型,往往在調用時認不出對象的類型吧(暫時隻能這樣去了解了,沒深層次去研究過)。

本文轉自 netcorner 部落格園部落格,原文連結: <b>http://www.cnblogs.com/netcorner/archive/2010/07/07/1772980.html</b>  ,如需轉載請自行聯系原作者

繼續閱讀