1.循環標簽:iterate標簽。用於枚舉數組、集合類型對象中的元素。
2.條件處理標簽:用於是否相等、比較大小等判斷。這類標簽有empty、equal 、greaterEqual、greaterThan、lessEqual、lessThan、match、messagesNotPresent、messagesPresent、notEmpty、notEqual、notMatch、notPresent、present。
3.流控制標簽:用於轉向其他的頁面。redirect和forward屬性這類標簽。
一、循環標簽(iterate)
<logic:iterate>標簽用於對數組以及集合類型對象中的元素進行枚舉。<logic:iterate>標簽在功能上和JSTL中的<c:forEach>標簽非常相似。<logic:iterate>標簽的常用屬性的意義和作用如下:
1.id:一個表示集合中的每一個元素的變量,被保存在page范圍中。
2.name:一個數組或集合對象名,或是一個包含有getter方法的JavaBean。
3.property:如果name是一個JavaBean,那麼property就是這個JavaBean的屬性名。<logic:iterate>標簽通過這個屬性名獲得要枚舉的數組或集合對象。
4.indexId:循環過程中的索引(從0開始),相當於Java中在for循環中使用變量i來獲得循環中每一項的索引。
5.offset:偏移量。也就是從數組或集合的第幾個元素開始枚舉。
6.length:從offset開始,要枚舉的元數的個數。
7.scope:name變量保存的范圍。如果不指定,<logic:iterate>標簽將搜索所有的范圍。也就是說,依次按著page、request、session和application進行搜索,如果在不同的范圍有同樣的變量名,以先搜索到的為准。
下面的例子演示了<logic:iterate>標簽的使用。在<samples工程目錄>目錄中建立一個iterate.jsp文件,代碼如下:
<%@ page import="java.util.*" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<html>
<head>
<title>測試iterate標簽</title>
</head>
<body>
<%
String array[] = { "bill", "王明", "趙陽" };
pageContext.setAttribute("array", array);
List<String> list = new LinkedList<String>();
list.add("計算機");
list.add("英語");
pageContext.setAttribute("list", list);
pageContext.setAttribute("iterator", list.iterator());
Map<String, String> map = new HashMap<String, String>();
map.put("book", "書");
map.put("apple", "蘋果");
pageContext.setAttribute("keySet", map.keySet());
pageContext.setAttribute("entrySet", map.entrySet());
%>
<logic:iterate id="s" name="array" indexId="i" offset="1" length="1">
array[<bean:write name="i"/>] = <bean:write name="s"/>
</logic:iterate>
<br>
<jsp:useBean id="form" class="actionform.HtmlTagsForm"/>
<jsp:setProperty name="form" property="hobbies" value="<%= new String[]{"計算機","旅游","攝影"} %>"/>
<logic:iterate id="s" name="form" property="hobbies">
<bean:write name="s"/>
</logic:iterate>
<br>
<logic:iterate id="s" name="list" indexId="i">
list[<bean:write name="i"/>] = <bean:write name="s"/>
</logic:iterate>
<br>
<logic:iterate id="s" name="iterator" indexId="i" offset="1">
list[<bean:write name="i"/>] = <bean:write name="s"/>
</logic:iterate>
<br>
<logic:iterate id="entry" name="entrySet">
<bean:write name="entry" property="key"/> = <bean:write name="entry" property="value"/>
</logic:iterate>
</body>
</html>
在IE中輸入如下的URL測試iterate.jsp:
http://localhost:8080/samples/iterate.jsp
二、條件處理標簽
條件處理標簽可分為如下三類:
1.Test: present、notPresent、empty、notEmpty、 messagesPresent、messagesNotPresent
2.比較:equal, lessThan, lessEqual, greaterThan和greaterEqual
3.字符串匹配: match、notMatch
所有的條件處理標簽都有name和property屬性。分別用來指定對象名和屬性名。如下面的代碼演示了<logic:empty>和<logic:lessThan>標簽的使用:
<logic:empty name="var">
var為空
</logic:empty>
<logic:lessThan name="employee" property="age" value="18">
不符合工作年齡
</logic:lessThan>
三、流控制標簽(redirect和forward)
<logic:redirect>用於重定向到其他的Web資源。用法如下:
<logic:redirect href="http://www.sina.com.cn"/>
<logic:forward>標簽用於把當前的請求轉發給其他的靜態資源、JSP頁或Servlet。在功能和使用上和<jsp:forward>類似。
關於Logic標簽庫的更詳細的信息請讀者參閱Struts的官方網站,URL如下:
http://struts.apache.org/1.2.9/userGuide/struts-logic.html