1. 程式人生 > >struts2通用標籤

struts2通用標籤

一.介紹

Struts2的作用 Struts2標籤庫提供了主題、模板支援,極大地簡化了檢視頁面的編寫,而且,struts2的主題、模板都提供了很好的擴充套件性。實現了更好的程式碼複用。Struts2允許在頁面中使用自定義元件,這完全能滿足專案中頁面顯示覆雜,多變的需求。 Struts2的標籤庫有一個巨大的改進之處,struts2標籤庫的標籤不依賴於任何表現層技術.

二.常見通用標籤分類

(1)property 標籤
(2)url標籤
示例: <!-- 對於value值會自動的進行OGNL解析 --> <!-- 結果如下:/Web_Struts2_Test/testUrl?productId=1222 -->
<s:url value="/testUrl" var="url1"> <s:param name="productId" value="productId"></s:param> </s:url> <!-- 對於value若不希望進行OGNL解析,則使用單引號引起來 --> <!-- 結果如下:/Web_Struts2_Test/testUrl?productId=productId  --> <br><br> <s:url value="/testUrl" var="url2"> <s:param name="productId" value="'productId'"></s:param>
</s:url> ${url2 } <!-- 構建一個請求action地址 --> <!-- 結果如下:/Web_Struts2_Test/helloWorld/testAction!save.do --> <br><br> <s:url action="testAction" namespace="/helloWorld" method="save" var="url3"></s:url> ${url3 } <!-- 指定如果請求過來是get,將其引數加在該url後邊   ,如果是all,則都加--> <br><br>
<s:url value="testUrl" var="url4" includeParams="get"></s:url> ${url4 } (3)param 標籤 param 標籤用來把一個引數傳遞給包含著它的那個標籤 無論在給出 value 值時有沒有使用 %{}, Struts 都會對它進行 ognl 求值 如果想傳遞一個 String 型別的字串作為引數值, 必須把它用單引號括起來.  可以把 value 屬性的值寫在開始標籤和結束標籤之間. 利用這種方式來傳遞一個 EL 表示式的值 (4)set 標籤 set 標籤用來在以下 Map 物件裡建立一個鍵值對: ValueStack 值棧的 ContextMap 值棧 Map 型別的 session 物件 Map 型別的 application 物件 Map 型別的 request 物件 Map 型別的 page 物件 s:set:向page,request,session,application,域加入一個屬性值 <s:set name="myProduct" value="productName" scope="request"></s:set> productName:${requestScope.myProduct } (5) push 標籤 push 標籤的功能和 set 標籤類似. push 標籤將把一個物件壓入 ValueStack 而不是壓入 ContextMap.  push 標籤在標籤起始時把一個物件壓入棧, 標籤結束時將物件彈出棧. <%Person person = new Person("CUI",10);  request.setAttribute("person",person); %> <!-- 該值在標籤執行時,已經將該物件壓入棧頂,標籤結束時,將物件彈出 --> <s:push value="#request.person"> ${name } </s:push> (6)if, else 和 elseif 標籤 這三個標籤用來進行條件測試, 它們的用途和用法類似於 if, else 和 elseif 關鍵字. 其中 if 和 elseif 必須有 test 屬性 productPrice值棧中的值 <s:if test="productPrice>1000"> 真貴 </s:if> <s:elseif test="productPrice>900"> 還好 </s:elseif> <s:else> 一般 </s:else> (7)iterator 標籤     iterator 標籤用來遍歷一個數組, Collection 或一個 Map, 並把這個可遍歷物件裡的每一個元素依次壓入和彈出 ValueStack 棧 在開始執行時, iterator 標籤會先把 IteratorStatus 類的一個例項壓入 ContextMap, 並在每次遍歷迴圈時更新它.  可以將一個指向 IteratorStatus 物件的變數賦給 status 屬性. <% List<Person> persons = new ArrayList<Person>(); persons.add(new Person("AA",1)); persons.add(new Person("BB",2)); persons.add(new Person("CC",3)); persons.add(new Person("DD",4)); persons.add(new Person("EE",5)); request.setAttribute("persons" ,persons); %> <!-- 會依次把要遍歷的物件放在值棧的棧頂   標籤結束 會彈出 --> <s:iterator value="#request.persons" status="status"> index - ${status.index} -count:${status.count} --${name }---${age }<br> </s:iterator> <s:iterator value="persons"> ${name }---${age }<br> </s:iterator> (8) sort 標籤 sort 標籤用來對一個可遍歷物件裡的元素進行排序 s:sort可以對集合中的元素進行排序 <br><br> <%PersonComparator personComparator = new PersonComparator();  request.setAttribute("comparator",personComparator); %> <s:sort comparator="#request.comparator" source="persons" var="persons2"></s:sort> <s:iterator value="#attr.persons2"> ${name }--${age } <br> </s:iterator> <br><br> (9) date 標籤 date 標籤用來對 Date 物件進行排版 format 屬性的值必須是 java.text.SimpleDateFormat 類裡定義的日期/時間格式之一.  <% Date date = new Date(); request.setAttribute("date",date); %> <br> s:date可以對Date物件進行排版 <br> <s:date name="#request.date" format="yyyy-mm-dd hh-mm:ss" var="date2" /> date:${date2 } (10)a 標籤 a 標籤將呈現為一個 HTML 連線. 這個標籤可以接受 HTML 語言中的 a 元素所能接受的所有屬性.  <s:iterator value="persons"> <!-- 可以使用%{} 把屬性包裝起來,使其強制的進行OGNl解析 --> <s:a href="getPerson.action?name=%{name}">${name }</s:a> </s:iterator>