Struts2標簽庫參考word_第1頁
Struts2標簽庫參考word_第2頁
Struts2標簽庫參考word_第3頁
Struts2標簽庫參考word_第4頁
Struts2標簽庫參考word_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Taglib (Struts2標簽庫)Struts2 Taglib抽象了不同表示技術(shù),現(xiàn)在Struts2主要支持三種表示技術(shù):JSP,FreeMarker和Velocity。但部分的Tag在三種表示技術(shù)下都可以使用,但是也有部分只能在某一種情況下使用。Tab可以分為兩類:通用標簽和UI標簽。4.1節(jié) 通用標簽通用標簽用來在頁面表示的時候控制代碼執(zhí)行的過程,這些標簽也允許從Action或者值堆棧中取得數(shù)據(jù)。例如地域,JavaBeans,URLs,和action??刂茦撕灴刂瞥绦驁?zhí)行,例如:if,else,iterator數(shù)據(jù)標簽管理數(shù)據(jù)的取得和創(chuàng)建,例如:bean,push,i18n控制標簽if

2、標簽 描述 If標簽用來控制基本的條件處理流程,通常和else標簽或者elseif標簽連用。參數(shù)名字是否必須默認值可否使用表達式類型描述id否是String用來表示該元素,對于UI和Form標簽來說直接轉(zhuǎn)變?yōu)镠TML id屬性test是是Boolean用來決定是否顯示標簽內(nèi)部內(nèi)容的表達式例子 Will Not Be Executed Will Be Executed Will Not Be ExecutedelseIf 標簽參考if標簽else 標簽參考if標簽append標簽 描述用來做iterator標簽的輔助,將不同iterator中的內(nèi)容合在一個iterator中。參數(shù)名字是否必須默認

3、值可否使用表達式類型描述id否是String用來保存結(jié)果iterator的對象在value context中的名字。例子推薦精選Action類public class AppendIteratorTagAction extends ActionSupport private List myList1; private List myList2; private List myList3; public String execute() throws Exception myList1 = new ArrayList(); myList1.add(1); myList1.add(2); myLi

4、st1.add(3); myList2 = new ArrayList(); myList2.add(a); myList2.add(b); myList2.add(c); myList3 = new ArrayList(); myList3.add(A); myList3.add(B); myList3.add(C); return done; public List getMyList1() return myList1; public List getMyList2() return myList2; public List getMyList3() return myList3; 標簽

5、使用 generator 標簽(JSP Tag)描述從val屬性生成一個iterator。推薦精選參數(shù)例子例1:生成一個簡單的iterator,并且使用iterator標簽打印出內(nèi)容。 例2:生成一個iterator,使用count屬性。因為count屬性值為3,所以只有前三個內(nèi)容(aaa,bbb,ccc)在生成的iterator中。Generate an iterator with count attribute 例3:生成iterator,使用了id屬性,之后生成的對象放在pageContext中,可以通過指定的id來訪問。 例4:生成iterator,使用converter屬性,這里的c

6、onvertor僅僅將每一個對象添加了一個converter-前綴。 推薦精選public class GeneratorTagAction extends ActionSupport . public Converter getMyConverter() return new Converter() public Object convert(String value) throws Exception return converter-+value; ; .iterator 標簽描述迭代處理一個java.util.Connection或者java.util.Iterator對象參數(shù)名字是否

7、必須默認值可否使用表達式類型描述id否是StringId,status否否是Boolean如果指定,在循環(huán)的過程中會保留一個IteratorStatus類型的變量,該變量用來查詢當前迭代的狀態(tài)value否是String被迭代的對象例子例1: day is: 例2: 推薦精選 Days of the week 例3: tr class=oddeven , merge 標簽(同append?)描述參數(shù)例子sort 標簽(JSP-Tag)描述對一個可以迭代的對象進行排序操作。 參數(shù) 名字是否必須默認值可否使用表達式類型描述推薦精選Comparator是是java.util.Comparator排序用

8、的比較器Source否是String排序?qū)ο罄永?: 例2:subset描述遞歸iterator的一部分參數(shù)名字是否必須默認值可否使用表達式類型描述countFalse是IntegerIterator中被遞歸的一部分的item的數(shù)量Decider否是org.apache.struts2.util.SubsetIteratorFilter.Decider用來判斷iterator中的item是否包含在最終的subset內(nèi)部Source否是StringIterator的對象Start否是Integer開始位置例子Java類推薦精選public class MySubsetTagAction ext

9、ends ActionSupport public String execute() throws Exception l = new ArrayList(); l.add(new Integer(1); l.add(new Integer(2); l.add(new Integer(3); l.add(new Integer(4); l.add(new Integer(5); return done; public Integer getMyArray() return a; public List getMyList() return l; public Decider getMyDeci

10、der() return new Decider() public boolean decide(Object element) throws Exception int i = (Integer)element).intValue(); return (i % 2) = 0)?true:false); ; 推薦精選 數(shù)據(jù)標簽TODO 完成如下數(shù)據(jù)標簽數(shù)據(jù)標簽包括a action bean date debug i18n include param push set text url property4.2節(jié) UI標簽UI標簽主要是指Form相關(guān)的標簽,UI標簽又分為兩部分:form標簽和構(gòu)成

11、form內(nèi)部字段的其他標簽。每一個UI標簽都是基于模板的,即:每一個標簽都有一個對應的模板用來生成UI標簽的樣式,詳細內(nèi)容參看模板節(jié)。所有的UI標簽都有著共通的祖先UIBean,UIBean提供了這些UI標簽的一系列共通的屬性,這些屬性可以分為三類:模版相關(guān)的屬性,JavaScript相關(guān)的屬性和其他通用屬性。推薦精選模版相關(guān)屬性:屬性主題數(shù)據(jù)類型說明templateDirn/aString定義模版目錄themen/aString定義主題的名字templaten/aString定義模版名字JavaScript相關(guān)屬性:屬性主題數(shù)據(jù)類型說明onclicksimpleStringhtml java

12、script onclick 屬性ondbclicksimpleStringhtml javascript ondbclick屬性onmousedownsimpleStringhtml javascript onmousedown屬性onmouseupsimpleStringhtml javascript onmouseup屬性onmouseoversimpleStringhtml javascript onmouseover屬性onmouseoutsimpleStringhtml javascript onmouseout屬性onfocussimpleStringhtml javascrip

13、t onfocus屬性onblursimpleStringhtml javascript onblur屬性onkeypresssimpleStringhtml javascript onkeypress屬性onkeyupsimpleStringhtml javascript onkeyup屬性onkeydownsimpleStringhtml javascript onkeydown屬性onselectsimpleStringhtml javascript onselect屬性onchangesimpleStringhtml javascript onchange屬性Tooltip相關(guān)屬性:屬

14、性數(shù)據(jù)類型默認值說明tooltipStringnone為指定的組件設置TooltipjsTooltipEnabledStringfalse使用js表示tooltiptooltipIconString/struts/static/tooltip/tooltip.gif指向tooltip圖表的URLtooltipDelayString500多長時間后顯示Tooltip keysimpleString這個輸入字段對應的屬性,用來自動設置name,label和value通用屬性:屬性主題數(shù)據(jù)類型說明cssClasssimpleString定義html class 屬性cssStylesimpleStr

15、ing定義html style屬性titlesimpleString定義html title屬性推薦精選disabledsimpleString定義html disabled屬性labelxhtmlString定義form字段的標簽labelPositionxhtmlString定義標簽在Form中的位置,從左從上計算requiredPositionxhtmlString定義必須的標簽在Form中的位置,從左從上計算namesimpleString定義form字段的name映射requiredxhtmlBoolean在label上添加一個*tabIndexsimpleString定義 html

16、 tabIndex屬性valuesimpleObject定義form字段的值對于name和value的說明:name用來說明Form字段的名字,和Action類的屬性對應。value用來記錄Form字段的值,和Action類中屬性的值對應。所以在修改一個字段的內(nèi)容的時候應該使用如下的標簽: .但是,由于name和value的關(guān)系,struts2標準標簽可以自動對應,所以也可以使用如下標簽: .UI標簽說明:Form部分autocompletercheckboxcheckboxlistcomboboxdatetimepickerdoubleselectheadfileformhiddenlabe

17、loptiontransferselectoptgrouppasswordradioresetselect推薦精選submittextareatextfieldtokenupdownselect非Form部分:actionerroractionmessagecomponentdivfielderrortabletabbedPaneltreetreenode4.3節(jié) 主題和模板概念說明:標簽(tag):一小段代碼,在JSP,Velocity或者FreeMarker中執(zhí)行。程序開發(fā)的最小單位,用來生成HTML對應的元素。模板(template):一些代碼,通常使用FreeMarker寫成,可以被某

18、些Tag表示出來(通常是UI Tag)。主題(theme):一組模板打包在一起,提供通用功能的模版主題和模板主要針對可視化的標簽(Tag)而言,使用以下例子來說明三者之間的關(guān)系。假如我們要開發(fā)如下的一個畫面:我們使用如下的代碼:這里,每一個都是一個標簽(tag)。我們在看看這些標簽在一起生成的HTML源代碼:推薦精選Name:Password:在由標簽生成HTML代碼的時候,例如:推薦精選生成的代碼為:Name:我們可以看到,標簽提供的有效信息只有Name和name,而其余的部分,例如,等代碼都根據(jù)一個固定的模板文件生成,這個模板文件為:標簽使我們開發(fā)JSP畫面的時候使用的最小組件單元,我們根

19、據(jù)客戶的需要組合各種Tag達到客戶的需求。模板是生成這些Tag時候使用的,使用模板可以定義Tag的基本形式,在使用tag的時候,我們只需要指定該Tag的不同屬性,即可根據(jù)Tag指定的特殊屬性,結(jié)合模板的基本屬性生成可視化的HTML元素。主題是不同tag結(jié)合在一起而形成的。input type=text name=$?default()?html size=$parameters.get(size)?html maxlength=$parameters.maxlength?html value= disabled=disabled readonly=readonly

20、 tabindex=$parameters.tabindex?html id=$parameters.id?html推薦精選 class=$parameters.cssClass?html style=$parameters.cssStyle?html title=$parameters.title?html/我們考慮標簽(Tag)使用模板(Template)生成HTML的過程,根據(jù)不同的模板,坑頂可以生成不同的HTML畫面,這樣我們可以把不同tag的,視覺效果一致的模板放在一起:例如: TemplateForm_A, TemplateForm_B TemplateTextField_A, T

21、emplateTextField_B TemplatePassword_A, TemplatePassword_B, TemplateSubmit_A, TemplateSubmit_B TemplateReset_A, TemplateReset_B這樣將_A的模板放在一起叫做A主題(Theme),將_B的模板放在一起叫B主題。這樣我們在分別使用A主題,B主題的時候可以得到同一個Tag的不同的視覺效果。模版和主題的概念處在Struts Tag的核心位置。Struts2默認提供了四種主題:Simple 主題:最簡單的主題XHTML 主題:默認主題,使用常用的HTML技巧CSS XHTML主題:

22、 使用CSS實現(xiàn)的XHTML主題AJAX 主題:基于XHTML主題,但是同工了AJAX功能相關(guān)配置:在perties文件中有如下項目:struts.ui.theme=xhtmlstruts.ui.templateDir=templatestruts.ui.templateSuffix=ftlstruts.ui.theme的值表示的是使用哪個主題,可選項位:xhtml,simple,css_html,ajax其中xhtml為默認值。struts.ui.templateDir的值表示模板的存放目錄。推薦精選struts.ui.templateSuffix的值表示模板文件明的后綴

23、,因為Struts2默認使用FreeMarker來編寫模板,所以這里我們基本使用ftl。 另外也可以使用vm(Velocity)和jsp(Java Server Page),但是所有的Template和Theme要我們自己開發(fā)。關(guān)于模板文件的存放目錄我們需要詳細說明,如上述說明,模板文件的存放位置位template,那么系統(tǒng)在那里尋找template目錄呢,首先,在web應用程序中查找,如果應用程序中存在一個叫做template的目錄(跟WEB-INF目錄平級),那么所有的文件從這個目錄中取得,具體的路徑還要加上主題的名字。然后,如果在web應用程序中沒有找到template目錄,那么stru

24、ts2會在classpath中尋找,由于struts2-core-2.0.9.jar文件中存在template目錄,其中內(nèi)置了四種主題,所以會使用這里變的模板。例如:如果我們使用了ajax主題,那么會在如下位置超找的主題應用程序/template/ajax/textfield.ftlclasspath/template/ajax/textfield.ftl修改或者擴展模板:有些時候Struts提供的模板不一定能夠滿足我們的需求,這時候我們需要修改或者擴展現(xiàn)有模板。重新做新的模板是不明智的,如果是在需要全新的模板,可以考慮基于simple擴展。修改:根據(jù)模板的裝載機制,可以考慮將模板從strut

25、s2-core-2.0.9.jar文件中解壓縮到web項目目錄,之后修改對應的文件。包裝:XHTML提供了一個很好的例子,simple主題提供了基本的功能,XHTML將它包括起來,例如:以下是template/xhtml/xxx.ftl(xxx表示模板名字)文件內(nèi)容:擴展(extend):使用棉線對象的特性可以擴展一個主題,擴展一個主題的時候不需要實現(xiàn)所有的模板,只需要實現(xiàn)需要變化的標簽。擴展需要在目錄中新建一個叫做perties的文件,這個文件只有一行,表明了繼承而來的主題的名字,例如:/template/ajax/perties文件內(nèi)容為:parent

26、= xhtml4.4節(jié) AJAX標簽(試驗階段)推薦精選Struts2內(nèi)置了Dojo 0.4 來提供對Ajax的支持。想要使用AJAX標簽需要做到兩點:1 使用Ajax主題2 在JSP畫面中使用了head標簽配置Ajax屬性AJAX標簽主要有: AJAX標簽的一些通用屬性:屬性說明類型href請求使用的URLStringlistenTopic使用逗號分割的一組主題列表,這個列表中的主題會導致這個Tag自己內(nèi)容(Div,Autocompleter)重新裝載或者執(zhí)行一個Action(Anchor,Submit)StringnotifyTopic使用逗號分割的一組主題列表,向這個列表中的主題發(fā)布一些

27、信息,例如:data,type,request,參看每個標簽的詳細說明StringshowErrorTransportText設置是否顯示錯誤消息(默認顯示)Booleanindicator請求過程中顯示的對象,通常位ProgressBar等StringIndicatorTopic監(jiān)聽一個Topic:dojo.event.topic.subscribe(/refresh, function(param1, param2) /this function will be called everytime /refresh is published);向一個Topic發(fā)布內(nèi)容:dojo.event.

28、topic.publish(/refresh, foo, bar);URLHref屬性對應的URL必須使用URL標簽定義,例如:推薦精選 Initial ContentDIV標簽:Div主要用來異步的顯示數(shù)據(jù), PageLoad會出發(fā)Div中數(shù)據(jù)的顯示,除非把AutoStart設置為False。另外,Div的數(shù)據(jù)顯示可以使用Topic來觸發(fā)。使用listenTopic來定義觸發(fā)器。例如:每次想/refresh0,/refresh1發(fā)布內(nèi)容的時候,上面代碼定義的div都會刷新。使用updateFreq可以讓Div周期性的觸發(fā),在autoStart設置位true的情況下,可以使用delay來延遲首

29、次畫面加載的出發(fā)時間,例如:上述代碼說明,每隔2秒該div觸發(fā)內(nèi)容更新一次,但是首次畫面加載完成之后3秒div出發(fā)內(nèi)容更新。todo 其他標簽4.5節(jié) OGNLOGNL是Object Graph Navigation Language的簡稱,詳細相關(guān)的信息可以參考:。這里我們只涉及Struts2框架中對OGNL的基本支持。OGNL是一個對象,屬性的查詢語言。在OGNL中有一個類型為Map的Context(稱為上下文),在這個上下文中有一個根元素(root),對根元素的屬性的訪問可以直接使用屬性名字,但是對于其他非根元素屬性的訪問必須加上特殊符號#。在Stru

30、ts2中上下文為ActionContext,根元素位Value Stack(值堆棧,值堆棧代表了一族對象而不是一個對象,其中Action類的實例也屬于值堆棧的一個)。ActionContext中的內(nèi)容如下圖: | |-application | |-sessioncontext map-| |-value stack(root) | |-request |推薦精選 |-parameters | |-attr (searches page, request, session, then application scopes) |因為Action實例被放在Value Stack中,而Value Stack又是根元素(root)中的一個,所以對Action中的屬性的訪問可以不使用標記#,而對其他的訪問都必須使用#標記。引用Action的屬性ActionContext中的其他非根(root)元素的屬性可以按照如下的方式訪問: or orAction類可以使用ActionContext中的靜態(tài)方法來訪問ActionContext。ActionContext.getContext().getSession().put(mySessionPropKey, mySessionObject);OGNL與Collection(Lists,Maps,Sets)生成List的語法為: e1,e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論