1. 程式人生 > >velocity的用法,包括擷取字元,迴圈遍歷,計算,判空

velocity的用法,包括擷取字元,迴圈遍歷,計算,判空

velocity模板其實就是java不分語法的翻譯,用到的屬性還是java的方法,get,set,等

1.擷取部分欄位substring

複製程式碼

1 原始字串:$!ag.tagValue,也許很長,前端頁面展示時需要擷取字串。
2 #set($str=$!ag.tagValue)
3 
4 #if($str.length()>30)
5     #set($str=$str.substring(0,30))
6     $str ...
7 #else
8     $!ag.tagValue
9 #end

複製程式碼

使用substring(begin,end)要注意,結束位置為:end索引-1

2.分割成陣列split

複製程式碼

 1 #if($!{result.creType} && $result.creType)
 2   #foreach ($element in $result.creType.split(","))
 3     #if($element == 1)
 4        <script>document.getElementsByName("cretype")[0].checked="checked";</script>
 5     #elseif($element == 2)
 6        <script>document.getElementsByName("cretype")[1].checked="checked";</script>
 7     #else
 8        <script>document.getElementsByName("cretype")[2].checked="checked";</script>              
 9     #end
10   #end
11 #end 

複製程式碼

3.說到split成陣列,就要看陣列的幾個可以用的方法

velocity 中的陣列對應 Java 中的 List 物件。對於 Java 原生 Array 物件, 只能夠 #foreach 進行遍歷,無法使用 arr[0]和arr[0]和arr.get(0) 方法。

4.所以學java從不用陣列,而用list

--事實上,list很方便,但list比陣列效率低很多倍

  • $myarray.isEmpty()list是否為空
  • $myarray.size()獲取list元素個數
  • $myarray.get(2)獲取list指定下標的元素
  • $myarray.add()增加元素

5.計數用$velocityCount

在foreach中velocityCount表示迴圈的次數,從1開始,代表第一個迴圈。

6.空null和空字串""的判斷

在velocity中,非null被認為是真的,所以,判斷null可以用

複製程式碼

1 #if($!變數名)
2  ……
3 #else
4  ……
5 #end

複製程式碼

或者既可以判斷null也可以判斷空字串

複製程式碼

1 #if("$!varName" != "")
2  不為null 或 ""
3 #else
4  ……
5 #end

複製程式碼

7.基本語法錯誤#end不要忘

最開始的時候經常#if就完了報錯,後來都是寫完if就end,最後寫中間。

8.巨集#macro其實也很簡單

原來感覺不懂不敢碰,自從寫了個velocity分頁後就忽然覺得巨集不要太好用。事情是這樣的,當時地區三級聯動需要多處呼叫,提取出成公共模組,用#parse匯入後出現衝突,因為一個頁面用兩次地區聯動程式碼,id就重複了。於是想把id給變成引數,當我需要這個公用程式碼的時候,把id當引數傳進去,最後render的結果就是html程式碼的id為我的引數。這樣看來,巨集就是一個函式。

想要用巨集,先寫好,然後parse,然後呼叫。

一個簡單的巨集函式:

1 #macro( d )
2 <tr><td></td></tr>
3 #end

使用它:如果在本頁面,直接#d,如果是單獨寫了一個模板檔案,那麼需要先#parse(檔案路徑),再#d,如同js外部引用。

傳引數的巨集:

複製程式碼

1 #macro( tablerows $color $somelist )
2 #foreach( $something in $somelist )
3 <tr><td bgcolor=$color>$something</td></tr>
4 #end
5 #end

複製程式碼

一個綜合使用,分頁

 9引用外部檔案#include和#parse

我開始經常用#include,後來發現重新整理頁面沒變化,用#parse就好了。字面理解,一個是直接拿過來,一個是解析後。所以,如果是傳html程式碼,可以直接include;若是包含velocity程式碼的要編譯#parse.