要使用Struts2的標(biāo)簽,只需要在JSP頁面添加如下一行定義即可: <%@ taglib prefix="s" uri="/struts-tags"%> struts2的標(biāo)簽共分為五大類: 一,、邏輯控制標(biāo)簽 用于進(jìn)行邏輯控制輸出,。主要分以下幾類: 1)條件標(biāo)簽:用于執(zhí)行基本的條件流轉(zhuǎn) <s:if>:擁有一個test屬性,其表達(dá)式的值用來決定標(biāo)簽里內(nèi)容是否顯示。<s:if test="#request.username=='hzd'">歡迎h(huán)zd</s:if> <s:elseif>:同上。 <s:else> 2)迭代標(biāo)簽:用于遍歷集合(java.util.Collection)或者枚舉值(java.util.Iterator)類型的對象,value屬性表示集合或枚舉對象,status屬性表示當(dāng)前循環(huán)的對象,在循環(huán)體內(nèi)部可以引用該對象的屬性 <s:iterator value="userList" status="user"> 姓名:<s:property value="user.userName" /> 年齡:<s:property value="user.age" /> </s:iterator> 3)組合標(biāo)簽:用于將多個枚舉值對象進(jìn)行疊加,,形成一個新的枚舉值列表 如將3個列表對象進(jìn)行了組合,形成新的列表對象: <s:append var="newIteratorList"> <s:param value="%{myList1}" /> <s:param value="%{myList2}" /> <s:param value="%{myList3}" /> </s:append> 輸出: <s:iterator value="%{#newIteratorList}"> <s:property /> </s:iterator> 4)分割標(biāo)簽:用于將一個字符串進(jìn)行分隔,,產(chǎn)生一個枚舉值列表 下面的代碼將分隔為3個字符串,,然后循環(huán)輸出 <s:generator val="%{'aaa,bbb,ccc'}"> <s:iterator> <s:property /> </s:iterator> </s:generator> 5)合并標(biāo)簽:用于將多個枚舉值按照數(shù)組的索引位置進(jìn)行合并 <s:merge var="newMergeList"> <s:param value="%{mylist1}">--設(shè)mylist1列表中有a,b,c三個元素 <s:param value="%{mylist2}">--設(shè)mylist2列表中有1,2,3三個元素 </s:merge> 合并后新的列表的元素及其順序?yàn)椋篴,1,b,2,c,3 <s:iterator value="%{#newMergeList}"> <s:property /> </s:iterator> 6)排序標(biāo)簽:用于對一組枚舉值進(jìn)行排序,屬性comparator指向一個繼承自java.util.Comparator的比較器,,該比較器可以是對應(yīng)Action頁面中的一個比較器變量,source指定要排序的列表對象 <s:sort comparator="myComparator" source="myList"> <s:iterator> <s:property value="..."/> </s:iterator> </s:sort> 7)子集標(biāo)簽:用于取得一個枚舉列表的子集,,source用于指定檢索的列表對象,start用于指定起始檢索的索引位置,,count用于指定檢索的結(jié)果數(shù)量,,decider屬性必須是一個org.apache.struts2.util.SubsetIteratorFilter.Decider類的子類實(shí)例,用以指定檢索的條件,。例如在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"> </s:subset>
二,、數(shù)據(jù)輸出標(biāo)簽 數(shù)據(jù)輸出標(biāo)簽用以輸出頁面中的元素、屬性,、隱含變量等,,即包括靜態(tài)文本的輸出,也包括struts2集成的各種變量的輸出。 1)鏈接標(biāo)簽:用于創(chuàng)建一個<a>標(biāo)簽,errorText用于顯示錯誤信息,,priInvokeJS表示該鏈接執(zhí)行時的javascript提示函數(shù),href表示跳轉(zhuǎn)地址. <s:a errorText="刪除錯誤" preInvokeJS="confirm('確認(rèn)刪除?')" href="test.jsp"> <img src="/image/delete.gif" /> </s:a> 2)Action標(biāo)簽:可以直接調(diào)用Action類中的函數(shù),前提是該Action類在struts.xml中有定義,name屬性用于指向映射文件中配置的Action函數(shù),executeResult屬性表示是否執(zhí)行結(jié)果集的跳轉(zhuǎn) <s:action name="LoginAction" executeResult="true" />--表示執(zhí)行LoginAction的默認(rèn)處理方法execute() <s:action name="LoginAction!login" executeResult="true" />--表示執(zhí)行LoginAction的處理方法login() 3)JavaBean標(biāo)簽:用于創(chuàng)建一個JavaBean對象,,name表示JavaBean類全名,var表示變量的實(shí)例名,,并可以包含<s:param>設(shè)置實(shí)例化輸入?yún)?shù) <s:bean name="xxx,xxx,xxx" var="xxx"> <s:param name="name" value="hzd" />--為該JavaBean的構(gòu)造方法傳遞參數(shù) </s:bean> 4)日期標(biāo)簽:用以輸出一個格式化的日期對象,,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" />--默認(rèn)格式 5)調(diào)用標(biāo)簽:用以輸出頁面的值棧調(diào)試信息,,通常在進(jìn)行程序調(diào)用時使用,,便于查找JSP頁面中的錯誤 6)引用資源文件標(biāo)簽:用于加載資源包到值棧,它可以允許<s:text>標(biāo)簽訪問任何資源包的信息,而不只是當(dāng)前action相關(guān)聯(lián)的資源包,。name屬性用以指定資源包的類路徑 如xxx.xxx.xxx.ApplicationMessages中定義了標(biāo)簽:HelloWord=歡迎您,! 則可以這樣引用: <s:i18n name="xxx.xxx.xxx.ApplilcationMessages"> <s:text name="HelloWord" /> </s:i18n> 7)包含頁面標(biāo)簽:用來包含一個Servlet的輸出(Servlet或JSP頁面),使用value屬性指定包含頁名稱,可以使用<s:param>傳遞參數(shù)給子頁 <s:include value="/test.jsp"> <s:param name="username">hzd</s:param>--參數(shù)username=hzd給test.jsp頁面 </s:include> 8)傳遞參數(shù)標(biāo)簽:用來為其他標(biāo)簽提供參數(shù),所以一般是嵌套在其它標(biāo)簽的內(nèi)部,,name屬性用來指定參數(shù)名稱,,value(可選)屬性用來指定參數(shù)值 <s:param name="username" value="hzd" />--這種方式的參數(shù)值會以String格式放入stack <s:param name="username">hzd</s:param>--這種方式的參數(shù)值會以O(shè)bject的格式放入stack 9)值棧標(biāo)簽:用以加入一個值到值棧中 <s:push value="user"> <s:property value="name" />--為user指定name屬性 <s:property value="age" />--為user指定age屬性 </s:push> 10)變量賦值標(biāo)簽:賦予變量一個特定范圍內(nèi)的值,name屬性表示變量的名字,,scope表示變量的作用域(application.session.request.page.action),,value變量的值 <s:set> 11)國際化標(biāo)簽:用于輸出國際化信息,name屬性指定國際化資源文件中消息文本的key,可以與<s:i18n>標(biāo)簽結(jié)合使用 <s:text name="HelloWord" />--它會按照一定的順序查找資源文件,直到找到定義HellowWord標(biāo)簽的資源文件為止 12)鏈接標(biāo)簽:用于創(chuàng)建一個URL鏈接,并可以通過<s:param>標(biāo)簽提供request參數(shù) <s:url id="url" value="/test.jsp"> <s:param name="username">hzd</s:param> </s:url> 13)屬性標(biāo)簽:用以輸出value屬性的值,,并擁有一個default屬性,在value對象不存在時顯示,。escape屬性為true,來輸出原始的HTML文本 <s:property value="getText('some.key')">
三、HTML表單標(biāo)簽 HTML標(biāo)簽都擁有以下3個設(shè)置樣式的屬性,。 templateDir:執(zhí)行模板路徑 theme:指定主題名稱,,可選值包括simple、xhtml,、ajax等 template:指定模板名稱 使用HTML表單標(biāo)簽會生成大量格式化的HTML代碼,,這些代碼是由struts2的模板生成的,這樣的好處是可以讓我們的jsp代碼十分簡單,,只需要配置使用不同的主題模板,,就可以顯示不同的頁面樣式。 struts2默認(rèn)提供了5種主題(在此不做詳細(xì)介紹): simple主題:最簡單的主題 XHTML主題:默認(rèn)主題,,使用常用的HTML技巧 CSS XHTML主題:使用CSS實(shí)現(xiàn)的XHTML主題 archive主題:使用文檔生成主題 AJAX主題:基于AJAX實(shí)現(xiàn)的主題 通過在struts.properties文件中改變struts.ui.theme,struts.ui.templateDir,struts.ui.templateSuffix三個標(biāo)簽來自由切實(shí)可行換主題 由于HTML表單標(biāo)簽也不少,所以還是要用的時候在網(wǎng)上找吧... 四,、HTML非表單標(biāo)簽 主要用來輸出各種錯誤和消息。 1)錯誤標(biāo)簽:用以輸出Action錯誤信息 <s:actionerror /> 2)消息標(biāo)簽:用以輸出Action普通消息 <s:atcionmessage /> 3)字段錯誤標(biāo)簽:用以輸出Action校驗(yàn)中某一個字段的錯誤信息或所有字段的錯誤信息 <s:fielderror />--輸出所有字段的錯誤信息 <s:fielderror> <s:param>username</s:param>--輸出字段username的錯誤信息 <s:param>password</s:param>--輸出字段password的錯誤信息 <s:fielderror> 4)DIV標(biāo)簽:用以輸出一個<div>標(biāo)簽
五,、AJAX標(biāo)簽 AJAX標(biāo)簽是struts2專門提供的一組進(jìn)行AJAX操作的標(biāo)簽,,在使用這些標(biāo)簽之前,需要在JSP頁面中添加如下引用: <%@ taglib prefix="sx" uri="/struts-dojo-tags"%> 1)鏈接標(biāo)簽:用于創(chuàng)建一個<a>鏈接,,并且在單擊該鏈接時執(zhí)行異步的請求,該標(biāo)簽的url屬性必須使用<s:url/>標(biāo)簽進(jìn)行設(shè)置,target屬性指向要被更新的頁面組件,showLoadingText屬性決定是否顯示文本,indicator表示異步請求時要顯示的圖片 使用form標(biāo)簽: <s:div id="targetDiv"> <s:form action="LoginAction"> <sx:a targets="targetDiv" showLoadingText="false" indicator="loadingImage" /> </s:form> </s:div> 使用url標(biāo)簽: <s:div id="targetDiv"> <s:url id="ajaxTest" value="/LoginAction.action"> <sx:a targets="targetDiv" href="%{ajaxTest}" showLoadingText="false" indicator="loadingImage" /> </s:div> 2)自動完成標(biāo)簽:是一個組合框組件,在文本框中輸入文本,,能夠給出一個下拉的提示列表,。list屬性用以指定一個自動提示檢索的列表集合(可以是Action中的List類型的屬性),autoComplete屬性為true時表示進(jìn)行自動提示 <sx:autocompleter name="test" list="{'上海','湖南',廣東}" autoCompleter="true" /> 3)自動事件綁定標(biāo)簽:該標(biāo)簽可以為多個對象的多個事件進(jìn)行監(jiān)聽,,并能夠發(fā)送異步請求,。src屬性指定監(jiān)聽的對象源,events屬性指定監(jiān)聽的事件類型(JavaScript事件),target屬性指定異步返回內(nèi)容填充的目標(biāo),,indicator屬性表示執(zhí)行異步請求時顯示的圖片 <s:div id="targetDiv"> <s:form action="login"> <s:submit id="bin" /> <s:bind src="bin" events="onclick" targets="targetDiv" showLoadingText="false" indicator="%{getText('loadingImage')}" /> </s:form> </s:div> 4)日期選擇標(biāo)簽:用以彈出一個日期和時間的選擇窗口,,displayFormat屬性指定要選擇日期的格式,name表示當(dāng)前組件的屬性的對象,value表示默認(rèn)值,label表示顯示的文本 <sx:datetimepicker name="order.date" label="Order Date" displayFormat="yyyy-MM-dd" value="%{'2006-01-01'}" /> 5)樹標(biāo)簽:用以輸出一個樹形結(jié)構(gòu) <sx:tree> 6)Tab頁標(biāo)簽:使用AJAX的方式顯示多個Tab頁 <s:tabbedpanel> |
|