版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
零點起飛學JavaWeb開發(fā)之Struts2標簽庫零點起飛學JavaWeb開發(fā)之Struts2標簽庫零點起飛學JavaWeb開發(fā)之Struts2標簽庫第21章Struts2標簽庫Struts2框架提供給開發(fā)者定義好的標簽庫,使用Struts2標簽進行視圖層開發(fā)簡潔而又功能強大。可以說,Struts2標簽是在Struts1基礎上的一個很大的進步。前幾章示例中的JSP文件已經(jīng)在使用Struts2標簽了。本章將講解常用標簽的使用方法,力求讓讀者能夠準確掌握它們的用法。21.1Struts2標簽庫概述Struts2標簽極大地簡化了頁面的輸出,同時又提供了豐富、強大的功能,下面通過幾個方面對其進行介紹。21.1.3
Struts2標簽庫的使用使用Struts2標簽庫必須指定標簽庫定義文件(TLD文件)的位置,該文件記錄了實現(xiàn)標簽功能文件的位置、屬性等信息,JSP容器通過該文件獲知在什么地方調(diào)用標簽庫。解壓struts2-core-2.3.4.jar文件,讀者可以在META-INF目錄下找到struts-tags.tld文件。21.2Struts2控制標簽Struts2控制標簽主要包含一些用于實現(xiàn)分支、循環(huán)等流程控制的標簽。使用該類標簽可以在JSP文件中方便地進行流程控制。下面分別對這些標簽進行講解。21.2.1循環(huán)標簽iteratoriterator標簽主要用來對集合屬性進行遍歷輸出,其中的集合屬性可能是List、Map或者是數(shù)值。從上面的代碼可以看出iterator標簽的使用方法。在使用<s:iterator>標簽進行輸出時,常用的標簽屬性如下所述。id:指定了集合的id。value:該屬性指定即將進行遍歷的集合對象。status:該屬性用來代表一個遍歷時的IteratorStatus實例,該實例即當前被遍歷到的集合的元素。IteratorStatus常用的方法有以下幾個。intgetIndex():返回當前被遍歷元素的索引值。intgetCount():返回已經(jīng)遍歷元素的總數(shù)。boolean
isEven():判斷當前迭代元素是否為偶數(shù)。boolean
isOdd():判斷當前迭代元素是否為奇數(shù)。boolean
isFirst():判斷當前迭代元素是否為集合中第一個元素。boolean
isLast():判斷當前迭代元素是否為集合中最后一個元素。21.2.2選擇標簽if/elseif/else該標簽主要用來控制流程分支,同Java的流程控制相似,都是用一個boolean類型的表達式的值判斷是否進行相關的操作,其格式如下:<s:iftest="">...<s:if><s:elseiftest="">...<s:elseif><s:else>...</s:else>上面3個標簽中的test屬性必須設置,它是一個boolean類型的表達式,如果test的值為true,則進行下面的操作。下面通過一個例子說明其使用方法。21.2.3集合連接標簽appendappend標簽用于將多個集合對象連接在一起,從而組成一個新的集合。一般來說,這樣拼接的目的就是為了使用iterator標簽遍歷新的集合。id:用來指定拼接后生成對象的id。這樣在使用iterator遍歷時就可以通過value引用到該對象。例如,newList是新生成List對象的id,在iterator遍歷時,用value="#newList"來指向該List對象。<s:param/>:用來指定要拼接的子對象。例如myList1和myList2就是兩個用來進行拼接的子對象。21.2.4子集標簽subset該標簽用于獲取某個集合的子集合,該標簽的常用屬性有以下幾種。id:指定了集合元素的ID。source:指定源集合的名字,為一個字符串。start:為一個Integer類型,指定子集合從源集合的哪個元素開始獲取,默認為0,即從第一個元素開始獲取。count:為一個Integer類型的值,指定子集合從源集合獲取元素的個數(shù),默認為從start開始直到結尾。21.2.5排序標簽sort該標簽用來對指定的集合進行排序,開發(fā)者需要指定自己的排序規(guī)則。如果要實現(xiàn)自己的規(guī)則,只需要實現(xiàn)Java.util.Comparator接口即可。該標簽的常用屬性有以下幾種。id:指定了集合元素的ID。comparator:必填屬性,為一個Comparator類型,用于指定用戶自定義的Comparator實例。source:可選屬性,為一個String類型值,用來指定被排序的集合名。如果不指定該值,則默認對值棧的棧頂集合進行排序。使用sort標簽必須指定comparator屬性,如果用戶需要開發(fā)自己的comparator,只需要實現(xiàn)Java.util.Comparator接口并重寫compare()方法即可。21.3數(shù)據(jù)標簽數(shù)據(jù)標簽用來提供各種數(shù)據(jù)訪問的功能,下面對一些常用的數(shù)據(jù)標簽進行介紹。21.3.1控制器調(diào)用標簽actionaction標簽允許程序員在JSP頁面中直接調(diào)用struts.xml中配置的Action類。在JSP文件中,可以通過action標簽的屬性引用Action的name和namespace,從而實現(xiàn)調(diào)用,并且可以顯示調(diào)用的結果。name:指定了struts.xml文件中定義的業(yè)務控制器的名字,表示調(diào)用的是該控制器。executeResult:指定了是否指向所調(diào)用Action的result,如果為true,將會顯示result結果;否則不顯示。ignoreContextParams:用來指定是否將當前頁面中的請求參數(shù)傳入調(diào)用的Action。默認為false,即傳遞請求參數(shù)到Acton類。第3個action標簽雖然不顯示actionTagAction2執(zhí)行后的result,但是它通過<s:propertyvalue="#attr.
ActionString"/>去顯示doDefault()方法設置的ActionString屬性值。21.3.2
JavaBean調(diào)用標簽bean該標簽用于創(chuàng)建一個JavaBean實例,在JSP視圖中可以通過<s:bean/>標簽去創(chuàng)建多個JavaBean類的實例,通過<param.../>參數(shù)給該實例的屬性賦值,然后在JSP文件中使用該實例。name:必選屬性,用來指定調(diào)用的JavaBean的路徑。例如,com.examp.ch21.User說明調(diào)用的是User類。id:可選屬性,用來標識實例化后的JavaBean對象。如果指定了id屬性,該實例對象就被存入StackContext中,這樣在標簽外就可以使用它。21.3.3值棧置頂標簽push該標簽用來把一個值保存在值棧的棧頂,這樣可以方便訪問。21.3.4調(diào)試標簽debugdebug標簽主要用來進行調(diào)試,是Struts2為了調(diào)試提供的一個輔助功能。該標簽可以在頁面上生成一個超鏈接,單擊該鏈接可以查看StackContext中的內(nèi)容。21.3.5包含標簽includeinclude標簽和JSP標簽庫中的include標簽類似,使用它可以把其他的靜態(tài)頁面、JSP頁面、Servlet包含到當前的頁面中。該標簽的value屬性指定了被包含文件的名字,<param>標簽用來給這個頁面?zhèn)魅胍恍﹨?shù)。該標簽的使用方法和JSP指令元素include的使用方法類似,故這里不再給出示例。21.3.6參數(shù)傳遞標簽param該標簽一般在其他標簽的內(nèi)部使用,用來給其他的標簽傳遞參數(shù)。例如,可以在bean和include標簽中使用它。該標簽的屬性如下所述。name:用于指定參數(shù)的名字。value:用于設置參數(shù)值,該屬性為一個Object類型。21.3.7變量賦值標簽set該標簽用于在指定的范圍內(nèi)給一個變量設置一個值。該標簽主要有以下屬性。name:必填屬性,用于設置變量的名稱。value:可選屬性,用于指定變量的值。scope:可選屬性,用于指定變量的有效范圍,可以是application、session、request、page或者action。如果沒有指定,則該變量被放入StackContext中。21.3.8地址標簽url該標簽用來生成一個URL地址,主要有以下屬性。action:用來指定要訪問的Acton類的名字,如果沒有設置該屬性,可以使用value作為URL的地址。value:用來指定生成的URL地址,如果沒有設置該屬性,可以使用action聲明該URL地址。includeParams:可選屬性,用來聲明是否包含請求參數(shù),其值只能為none、all或者get。namespace:可選屬性,用來指定命名空間。method:可選屬性:用來指定Action類的方法。encode:可選屬性,用來指定是否需要encode請求參數(shù)。21.3.9值輸出標簽property該標簽用來輸出指定的值,它在JSP文件中經(jīng)常被使用。該標簽的屬性如下所述。default:可選屬性,如果輸出的屬性值為null,則用default的值去代替。escape:可選屬性,用來指定是否escapeHTML代碼。value:可選屬性,用來指定需要輸出的值,如果沒有指定該屬性,則輸出值棧棧頂?shù)膶傩灾怠?1.4表單標簽Struts2的用戶界面標簽可以分為表單標簽和非表單標簽,表單標簽在實際開發(fā)中用的非常廣泛,通過使用它,可以進行用戶數(shù)據(jù)的輸入和用戶交互等操作。Struts2的表單標簽有一個公共父類UIBean,在Struts2的源碼中可以找到這個類,目錄為src\core\src\main\Java\org\
apache\Struts2\components。所以,所有的表單標簽從該父類繼承了一些公共的屬性,可以簡單地分為以下3類。模板相關屬性:這些屬性主要用來指定表單使用的模板和主題,例如theme、template。JavaScript相關屬性:主要是用來在客戶端瀏覽器和用戶交互的一些屬性。例如onclick、ondbclick、onmousedown、onmouseup等。通用屬性:這些屬性是所有的表單要素都有的諸如名稱、label、值、標題、是否必填等。例如name、label、value、title、required等。21.4.1復選框標簽checkbox
該標簽用于顯示用戶輸入的復選框元素,下面通過一個例子來說明。21.4.2復選框集合標簽checkboxlist
該標簽可以根據(jù)一個集合屬性的值創(chuàng)建一系列的復選框,下面通過一個例子來說明其使用方法。label:該checkboxlist顯示的標簽。labelposition:用來指定label相對于checkboxlist的位置,top表明在checkboxlist的上面。list:指定集合類型的屬性。例如,#user.userlist指向StackContext中user實例的userlist屬性,它是一個List類型的屬性。listValue:用來指定復選框的提示。例如,listValue="name"將user的name屬性作為提示顯示在復選框的左側;listValue="value.age"則將user的age屬性作為提示顯示在復選框的左側。listKey:用來指定復選框的值(value)。例如,如果listKey="name",則以user對象的name屬性作為復選框的值。21.4.3組合框標簽combobox該標簽生成一個單行文本框和一個下拉列表框的組合,用戶可以選擇列表框中的值作為輸入也可以在文本框中自由輸入值。該標簽的屬性說明如下所述。list:必填屬性,該屬性指定的集合類型的變量值將作為下拉列表框的選項。readonly:可選屬性,用來指定文本框是否為只讀類型,默認為false,如果設置為true,則用戶只能在下拉列表框中選擇,而不能在文本框中輸入。21.4.4日期選擇標簽datetimepicker
該標簽用來生成一個日期、時間下拉選擇框,當單擊該選擇框時,會彈出一個選擇窗口,可以在這個窗口中選擇日期和時間。使用該標簽,可以避免用戶輸入錯誤的日期、時間數(shù)值,同時該標簽可以根據(jù)不同用戶的需要,顯示不同地區(qū)的日期和時間格式。該標簽常用的屬性如下所示。displayFormat:指定日期的顯示格式。displayWeeks:指定日歷能顯示的星期數(shù)目。endDate:指定最后可用日期,例如3000-1-1,則該日期后面的日期值不可用。formatlength:指定日期的顯示格式,該屬性可以是long、short、medium和full一共4個值。language:指定日期顯示的Locale,如果是簡體中文,則為zh_CN。startDate:指定最早可用的日期,如果為1900-1-1,則該日期前面的日期不可用。toogleType:指定日期選擇框出現(xiàn)、隱藏的方式,可以為plain、wipe、explode和fade共4個值。type:指定日期文本框的類型,可以為time或date,分別為時間選擇框和日期選擇框。value:指定當前的日期和時間,可以使用today表示當前的日期。weekStartOn:指定日期選擇框哪一天是一周的第一天,周日是0,周六是6。21.4.5下拉列表框標簽selectselect標簽用來創(chuàng)建一個下拉列表框,通過其list屬性去指定一個集合類型的變量,該變量的值為列表框的選項,其主要屬性說明如下所述。listKey:可選屬性,用來指定集合類型變量中的某個屬性為列表框的value。listValue:可選屬性,用于指定集合類型變量的某個屬性為列表框的標簽。multiple:可選屬性,用于指定該列表框是否允許多選。list:必填屬性,用于指定一個集合類型的變量作為該列表框的數(shù)據(jù)源。21.4.6單選框標簽radioradio為一個單選框,該框中可以有多個選項,但是用戶只能選擇其中的一個。radio標簽的主要屬性和chekboxlist完全相同。例如checkboxlist標簽通過list屬性指定數(shù)據(jù)源,radio標簽也可以使用list屬性指定單選框中的各個選項。由于radio標簽的使用方法和checkboxlist類似,這里不再給出示例。21.4.7選項組標簽optgroup
該標簽用于生成一個下拉列表框的選項組,一個下拉列表框可以包含多個選項組,該標簽必須放在select標簽中使用。21.4.8其他常用表單標簽Struts2還包括一些其他表單標簽,如文本區(qū)域標簽textarea、密碼標簽password和輸入框標簽textfield。下面依次介紹這3個標簽。1.文本區(qū)域標簽textarea該標簽比較常用,它用來生成一個文本區(qū)域以接收多行的文本數(shù)據(jù)。其主要屬性及說明如下所述。label:指定文本區(qū)域的標簽。name:用來指定文本區(qū)域的名字。cols:用來指定文本區(qū)域的列數(shù)。rows:用來指定文本區(qū)域的行數(shù)。2.密碼標簽password該標簽用來生成一個密碼表單域。用戶在輸入數(shù)據(jù)時,該標簽會用特定的字符顯示用戶的輸入。由于該標簽出現(xiàn)于本書的大多數(shù)JSP文件中,這里不再給出示例。3.輸入框標簽textfield該標簽用來生成一個單行文本輸入框,在實際的開發(fā)中可以使用size屬性和maxlength屬性來控制該文本框允許輸入的最多字符數(shù),以及文本框的顯示長度。21.5非表單標簽非表單在頁面中生成非表單的可視化元素,下面對常見的這類標簽進行講解。21.5.1信息顯示標簽actionerrror和actionmessage這兩個標簽都用來輸出Action類對應方法產(chǎn)生的信息,actionerror用來輸出Action類中getActionErrors()方法返回的信息,actionmessage用來輸出Action類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年消防工程消防安全隱患排查與整改承接合同范本3篇
- 酒店設施融資租賃轉租賃協(xié)議
- 2025年度KTV特色主題裝飾設計制作合同3篇
- 古鎮(zhèn)區(qū)二手房交易協(xié)議
- 知識更新基金管理辦法
- 商務接待商務車租賃協(xié)議
- 2025版購貓合同:貓咪健康養(yǎng)護與領養(yǎng)指南3篇
- 智能醫(yī)療信息系統(tǒng)安裝協(xié)議
- 社區(qū)服務點管理原則
- 旅游景點建筑合同
- 魔方社團活動記錄-副本
- 濕式靜電除塵器技術方案0001
- D502-15D502等電位聯(lián)結安裝圖集
- T∕CSCS 018-2022 裝配式建筑鋼結構防腐蝕涂裝技術規(guī)程
- 第二章multisim仿真作業(yè)
- 瑞文智力測驗及答案經(jīng)典版
- 境外人員住宿登記講解
- 生物工程工廠設計
- 項目成果交付清單
- 教師教學質量評價表(領導用表)
- 退役軍犬黃狐閱讀題目
評論
0/150
提交評論