Struts的Logic標籤可以根據特定的邏輯條件來判斷網頁的內容,或者迴圈遍曆集合元素,它和HTML,Bean標籤是Struts應用種最常用的三個標籤.它的功能主要是比較運算,進行字串的匹配,判斷指定的內容是否存在,迴圈遍曆集合,進行請求轉寄和重新導向,下面具體的說明標籤的用途:
<logic:equal>變數等於指定的常量
<logic:notEqual>變數不等於指定的常量
<logic:lessThan>變數小於指定的常量
<logic:lessEqual>變數小於或者等於指定的常量
<logic:geraterThan>變數大於指定的常量
<logic:geraterEqual>變數大於或等於指定的常量
以上這些標籤都很類似,有共同的屬性,cookie屬性指定cookie屬性的值,然後用value設定的常量進行比較.header屬性設定header要求標頭的值,也是通過value屬性設定的值進行比較.parameter屬性設定一個請求參數,然後也是通過value屬性設定的值進行比較.name屬性設定一個變數,然後用value比較.如果同時設定了name和property屬性,此時name屬性指定已經存在的JavaBean,property屬性指定Bean的屬性.這個標籤感覺十分簡單,用法也十分單一,下面研究一下進行字串匹配的標籤和判斷特定內容的標籤.
<logic:match>標籤是判斷變數種是否包含常量字串的,<logic:netMatch>也判斷是否不包含字串的,用name屬性定義一個字串變數,然後用value屬性的值去判斷變數是否包含這個字串或者是不包含這個字串,判斷成功返回true.
<logic:empty>和<logic:netEmpty>標籤可以判斷指定的變數是否為空白的字串,可以通過name屬性來判斷一個字串是否為null.例如是請求參數的字串.
<logic:present>和<logic:notPresent>標籤可以判斷指定的對象是否為空白,這個標籤的屬性很多.cookie屬性判斷Cookie是否存在.Header屬性判斷HTPP要求標頭是否存在.role屬性是判斷當前的許可權的使用者是否是指定的資訊安全角色.user屬性是判斷當前通過許可權驗證的使用者是否擁有指定的使用者名稱.parameter屬性是判斷請求的參數是否存在.name屬性是用來判斷指定的Bean是否存在.同時設定name和property屬性就是判斷Bean種的具體屬性是否存在了.
<logic:messagesPresent>和<logic:messagesNotPresent>標籤是用來判斷是否在request範圍內的特定的ActionMessages或者是子類ActionErrors對象.name屬性是用來檢索ActionMessages對象的key,property指定從ActionMessages集合對象中檢索某條訊息key也就是具體的ActionMessage對象.
進行迴圈遍曆Logic標籤是Logic標籤庫中最複雜的標籤,也是用途最廣泛的標籤,它能夠在一個迴圈中遍曆數組,Collection,Enumeration,Irerator或者Map中的所有元素
1) 遍曆集合的標籤<logic:iterate>的name屬性指定需要進行遍曆的集合對象,它每次從集合中檢索出一個元素,然後存放在page範圍內,並以id屬性指定這個字串來命名這個元素,最好是在裡面嵌套一個<bean:write>標籤,把剛剛遍曆的第一個id指定的字串輸出,然後在迴圈在輸出.length屬性需要遍曆的元素的數目,如果沒有設定length屬性,就遍曆集合中的所有元素.offset屬性指定開始遍曆的其實位置,預設值是0.indexId屬性定義一個代表當前被遍曆元素的系列號,這個變數存放在page範圍內,可以被<bean:write>標籤訪問輸出輸出的是int的數字.例如1.2.3.4等.可以使用者輸出輸出的元素的系列號.
2) 遍曆Map是通過<logic:iterate>標籤,name屬性指定一個HashMap,存放在request範圍,然後賦給id指定的變數,indexId可以指定索引編號,然後通過<bean:write>標籤輸出出來.在HashMap的每一個元素都是一個集合對象,所以可以嵌套使用.就是說<logic:inerate>這個標籤既可以把Collection的元素弄出來負給一個變數也可以弄Map的.所以說它的功能強大.還有一個collection屬性可以設定一個運算式,這個運算式返回的結果可以作為,<logic:inerate>標籤輸出的集合或者Map.這個屬性類似name屬性.
最後研究一下進行請求轉寄和重新導向的Logic標籤,<logic:forward>標籤用於請求轉寄,它的name屬性指定轉寄的目標,與Struts設定檔中的<global-forwards>元素和的子項目<forward>元素匹配.簡單的說就是<logic:forward>標籤的name屬性定義的值,要去找到<golbal-forwards>子項目<forward>元素的匹配的name屬性,然後通過path指定的路徑進行轉寄.重新導向用<logic:redierct>標籤它的forward,href和page屬性指定重新導向的目標,這幾個屬性和<html:link>標籤的屬性用法十分相似.