要使用Struts2的标簽,隻需要在JSP頁面添加如下一行定義即可:
<%@ taglib prefix="s" uri="/struts-tags"%>
struts2的标簽共分為五大類:
一、邏輯控制标簽
用于進行邏輯控制輸出。主要分以下幾類:
1)條件标簽:用于執行基本的條件流轉
<s:if>:擁有一個test屬性,其表達式的值用來決定标簽裡内容是否顯示。<s:if test="#request.username=='hzd'">歡迎hzd</s:if>
<s:elseif>:同上。
<s:else>
2)疊代标簽:用于周遊集合(java.util.Collection)或者枚舉值(java.util.Iterator)類型的對象,value屬性表示集合或枚舉對象,status屬性表示目前循環的對象,在循環體内部可以引用該對象的屬性
<s:iterator value="userList" status="user">
姓名:<s:property value="user.userName" />
年齡:<s:property value="user.age" />
</s:iterator>
3)組合标簽:用于将多個枚舉值對象進行疊加,形成一個新的枚舉值清單
如将3個清單對象進行了組合,形成新的清單對象:
<s:append var="newIteratorList">
<s:param value="%{myList1}" />
<s:param value="%{myList2}" />
<s:param value="%{myList3}" />
</s:append>
輸出:
<s:iterator value="%{#newIteratorList}">
<s:property />
4)分割标簽:用于将一個字元串進行分隔,産生一個枚舉值清單
下面的代碼将分隔為3個字元串,然後循環輸出
<s:generator val="%{'aaa,bbb,ccc'}">
<s:iterator>
</s:generator>
5)合并标簽:用于将多個枚舉值按照數組的索引位置進行合并
<s:merge var="newMergeList">
<s:param value="%{mylist1}">--設mylist1清單中有a,b,c三個元素
<s:param value="%{mylist2}">--設mylist2清單中有1,2,3三個元素
</s:merge>
合并後新的清單的元素及其順序為:a,1,b,2,c,3
<s:iterator value="%{#newMergeList}">
6)排序标簽:用于對一組枚舉值進行排序,屬性comparator指向一個繼承自java.util.Comparator的比較器,該比較器可以是對應Action頁面中的一個比較器變量,source指定要排序的清單對象
<s:sort comparator="myComparator" source="myList">
<s:property value="..."/>
</s:sort>
7)子集标簽:用于取得一個枚舉清單的子集,source用于指定檢索的清單對象,start用于指定起始檢索的索引位置,count用于指定檢索的結果數量,decider屬性必須是一個org.apache.struts2.util.SubsetIteratorFilter.Decider類的子類執行個體,用以指定檢索的條件。例如在Action中提供了以下方法用來取得一個Decider對象:
public Decider getDecider()
{
return new Decider(){
public boolean decide(Object element) throws Exception{
int i=((Integer)element).intValue();
return (((i%2)==0)?true:false);
}
};
然後引用該對象篩選子集:
<s:subset source="myList" decider="decider">
</s:subset>
或者不使用Decider對象:
<s:subset source="myList" count="13" start="3">
二、資料輸出标簽
資料輸出标簽用以輸出頁面中的元素、屬性、隐含變量等,即包括靜态文本的輸出,也包括struts2內建的各種變量的輸出。
1)連結标簽:用于建立一個<a>标簽,errorText用于顯示錯誤資訊,priInvokeJS表示該連結執行時的javascript提示函數,href表示跳轉位址.
<s:a errorText="删除錯誤" preInvokeJS="confirm('确認删除?')" href="test.jsp">
<img src="/image/delete.gif" />
</s:a>
2)Action标簽:可以直接調用Action類中的函數,前提是該Action類在struts.xml中有定義,name屬性用于指向映射檔案中配置的Action函數,executeResult屬性表示是否執行結果集的跳轉
<s:action name="LoginAction" executeResult="true" />--表示執行LoginAction的預設處理方法execute()
<s:action name="LoginAction!login" executeResult="true" />--表示執行LoginAction的處理方法login()
3)JavaBean标簽:用于建立一個JavaBean對象,name表示JavaBean類全名,var表示變量的執行個體名,并可以包含<s:param>設定執行個體化輸入參數
<s:bean name="xxx,xxx,xxx" var="xxx">
<s:param name="name" value="hzd" />--為該JavaBean的構造方法傳遞參數
</s:bean>
4)日期标簽:用以輸出一個格式化的日期對象,name表示要輸出的對象,format表示輸出的日期格式
<s:date name="user.birthday" format="dd/MM/yyyy" />
<s:date name="user.birthday" format="%{getText('some.i18n.key')}" />
<s:date name="user.birthday" />--預設格式
5)調用标簽:用以輸出頁面的值棧調試資訊,通常在進行程式調用時使用,便于查找JSP頁面中的錯誤
6)引用資源檔案标簽:用于加載資源包到值棧,它可以允許<s:text>标簽通路任何資源包的資訊,而不隻是目前action相關聯的資源包。name屬性用以指定資源包的類路徑
如xxx.xxx.xxx.ApplicationMessages中定義了标簽:HelloWord=歡迎您!
則可以這樣引用:
<s:i18n name="xxx.xxx.xxx.ApplilcationMessages">
<s:text name="HelloWord" />
</s:i18n>
7)包含頁面标簽:用來包含一個Servlet的輸出(Servlet或JSP頁面),使用value屬性指定包含頁名稱,可以使用<s:param>傳遞參數給子頁
<s:include value="/test.jsp">
<s:param name="username">hzd</s:param>--參數username=hzd給test.jsp頁面
</s:include>
8)傳遞參數标簽:用來為其他标簽提供參數,是以一般是嵌套在其它标簽的内部,name屬性用來指定參數名稱,value(可選)屬性用來指定參數值
<s:param name="username" value="hzd" />--這種方式的參數值會以String格式放入stack
<s:param name="username">hzd</s:param>--這種方式的參數值會以Object的格式放入stack
9)值棧标簽:用以加入一個值到值棧中
<s:push value="user">
<s:property value="name" />--為user指定name屬性
<s:property value="age" />--為user指定age屬性
</s:push>
10)變量指派标簽:賦予變量一個特定範圍内的值,name屬性表示變量的名字,scope表示變量的作用域(application.session.request.page.action),value變量的值
<s:set>
11)國際化标簽:用于輸出國際化資訊,name屬性指定國際化資源檔案中消息文本的key,可以與<s:i18n>标簽結合使用
<s:text name="HelloWord" />--它會按照一定的順序查找資源檔案,直到找到定義HellowWord标簽的資源檔案為止
12)連結标簽:用于建立一個URL連結,并可以通過<s:param>标簽提供request參數
<s:url id="url" value="/test.jsp">
<s:param name="username">hzd</s:param>
</s:url>
13)屬性标簽:用以輸出value屬性的值,并擁有一個default屬性,在value對象不存在時顯示。escape屬性為true,來輸出原始的HTML文本
<s:property value="getText('some.key')">
三、HTML表單标簽
HTML标簽都擁有以下3個設定樣式的屬性。
templateDir:執行模闆路徑
theme:指定主題名稱,可選值包括simple、xhtml、ajax等
template:指定模闆名稱
使用HTML表單标簽會生成大量格式化的HTML代碼,這些代碼是由struts2的模闆生成的,這樣的好處是可以讓我們的jsp代碼十分簡單,隻需要配置使用不同的主題模闆,就可以顯示不同的頁面樣式。
struts2預設提供了5種主題(在此不做詳細介紹):
simple主題:最簡單的主題
XHTML主題:預設主題,使用常用的HTML技巧
CSS XHTML主題:使用CSS實作的XHTML主題
archive主題:使用文檔生成主題
AJAX主題:基于AJAX實作的主題
通過在struts.properties檔案中改變struts.ui.theme,struts.ui.templateDir,struts.ui.templateSuffix三個标簽來自由切實可行換主題
由于HTML表單标簽也不少,是以還是要用的時候在網上找吧...
四、HTML非表單标簽
主要用來輸出各種錯誤和消息。
1)錯誤标簽:用以輸出Action錯誤資訊
<s:actionerror />
2)消息标簽:用以輸出Action普通消息
<s:atcionmessage />
3)字段錯誤标簽:用以輸出Action校驗中某一個字段的錯誤資訊或所有字段的錯誤資訊
<s:fielderror />--輸出所有字段的錯誤資訊
<s:fielderror>
<s:param>username</s:param>--輸出字段username的錯誤資訊
<s:param>password</s:param>--輸出字段password的錯誤資訊
4)DIV标簽:用以輸出一個<div>标簽
五、AJAX标簽
AJAX标簽是struts2專門提供的一組進行AJAX操作的标簽,在使用這些标簽之前,需要在JSP頁面中添加如下引用:
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
1)連結标簽:用于建立一個<a>連結,并且在單擊該連結時執行異步的請求,該标簽的url屬性必須使用<s:url/>标簽進行設定,target屬性指向要被更新的頁面元件,showLoadingText屬性決定是否顯示文本,indicator表示異步請求時要顯示的圖檔
使用form标簽:
<s:div id="targetDiv">
<s:form action="LoginAction">
<sx:a targets="targetDiv" showLoadingText="false" indicator="loadingImage" />
</s:form>
</s:div>
使用url标簽:
<s:url id="ajaxTest" value="/LoginAction.action">
<sx:a targets="targetDiv" href="%{ajaxTest}" showLoadingText="false" indicator="loadingImage" />
2)自動完成标簽:是一個組合框元件,在文本框中輸入文本,能夠給出一個下拉的提示清單。list屬性用以指定一個自動提示檢索的清單集合(可以是Action中的List類型的屬性),autoComplete屬性為true時表示進行自動提示
<sx:autocompleter name="test" list="{'上海','湖南',廣東}" autoCompleter="true" />
3)自動事件綁定标簽:該标簽可以為多個對象的多個事件進行監聽,并能夠發送異步請求。src屬性指定監聽的對象源,events屬性指定監聽的事件類型(JavaScript事件),target屬性指定異步傳回内容填充的目标,indicator屬性表示執行異步請求時顯示的圖檔
<s:form action="login">
<s:submit id="bin" />
<s:bind src="bin" events="onclick" targets="targetDiv" showLoadingText="false" indicator="%{getText('loadingImage')}" />
4)日期選擇标簽:用以彈出一個日期和時間的選擇視窗,displayFormat屬性指定要選擇日期的格式,name表示目前元件的屬性的對象,value表示預設值,label表示顯示的文本
<sx:datetimepicker name="order.date" label="Order Date" displayFormat="yyyy-MM-dd" value="%{'2006-01-01'}" />
5)樹标簽:用以輸出一個樹形結構
<sx:tree>
6)Tab頁标簽:使用AJAX的方式顯示多個Tab頁
<s:tabbedpanel>
如何聯系我:【萬裡虎】www.bravetiger.cn
【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)
【部落格】http://www.cnblogs.com/kenshinobiy/