1.1Struts2標簽使用原理解疑
首先收捣,我們能夠打開struts-tags.tld 這個文件進行觀察棉姐,他是Struts2自標簽定義文件屠列。可以看到伞矩,所有標簽定義都是在<taglib></taglib>之間定義笛洛。<tag></tag>用來定義一個具體標簽,同時每個標簽都可以有很多自己的屬性乃坤,這些屬性的定義都是以<attribute></attribute>來定義苛让。
<tlib-version></tlib-version>之間定義的是標簽庫的版本。<jsp-version></jsp-version>定義的是標簽庫支持JSP的哪個版本湿诊。<short-name></short-name>其實是標簽庫的默認名狱杰,<uri</uri>定義的是標簽庫的URL,在JSP中會使用到。<display-name></display-name>是顯示名厅须。<desription></desription>是標簽庫的記述仿畸,記述標簽庫的使用用途等。
<attribute>中<name></name>是屬性名稱定義朗和。<required></required>表示的該屬性是否是必須的屬性错沽,如果必須的則<required></required>之間為true,否則為false。<rtexprvalue></rtexprvalue>表示的是可否使用表達式眶拉,大多數(shù)標簽都是為false千埃。這里不是不能是使用表達式,而是恰恰相反表示可以使用表達式忆植。<description></description>定義和前面介紹相同放可。
1.2 OGNL 表達式語言介紹
OGNL(Object Graph Navigating Language)對象導(dǎo)航語言。
Struts2 中將應(yīng)用范圍中的數(shù)據(jù)以及Action處理的數(shù)據(jù)都存儲在一個區(qū)域中唱逢。Struts2種叫做 " valueStack "吴侦,中文名為:值棧。而OGNL就是從值棧中取出數(shù)據(jù)坞古,并在某些條件下進行數(shù)據(jù)過濾和計算的表達式語言。
在OGNL中常使用? ^ $ 分別對應(yīng)著:all first last.
1.3 Struts2 控制標簽簡介
Struts2的控制標簽主要用處是控制JSP等視圖中流程的轉(zhuǎn)向問題劫樟。這里筆者將一些常用的標簽進行說明痪枫。
1.3.1各個標簽進行說明
append標簽:將多個集合合并成一個集合
generator標簽:使用指定的分隔符將該字符串進行分隔
if、else叠艳、else if 標簽:進行一系列的判斷已達到目的奶陈。
iterator 標簽:對某個集合中所有屬性進行迭代遍歷
merge 標簽:與append標簽功能十分相似,但是集合中各個元素的排列順序是不同 的附较。
sort 標簽:對指定的數(shù)據(jù)集合進行排序或分類吃粒。當然,可以自定義自己的排序或分類條件拒课。
subset 標簽:讀取子集條件將某集合的子集讀取出來徐勃。也可以自定義自己的讀取子集條件事示,這里就不得不引進decider,他就是讀取子集的條件僻肖,可以不寫肖爵,如果寫了,則表明一個Decider對象實例臀脏,需要開發(fā)者自行定義此對象實例劝堪。
1.4 Struts2 數(shù)據(jù)標簽簡介
action標簽:實現(xiàn)在JSP頁面中調(diào)用Struts2的Action。其中ID是需要調(diào)用的Action的標識定義揉稚,name才是Action的名字秒啦,executeResult屬性,它是一個布爾型的值搀玖,如果為true則表示在JSP頁面中返回調(diào)用的Action的結(jié)果視圖帝蒿,反之則不顯示,默認值是false巷怜。還有一個是ignoreContextParams葛超,該屬性是來決定視圖中請求的參數(shù)是否需要傳遞到Action中去。顧名思義延塑,他也是一個布爾型的值绣张,如果為false則需要把參數(shù)傳遞到Action中,反之則不傳遞关带。它的默認值是false侥涵。
bean 標簽:用來創(chuàng)建一個具體的JavaBean實例。其中id是對需要創(chuàng)建的JavaBean實例對象進行標識定義宋雏,name是Javabean的名字芜飘,即類名。在子標簽中可以使用 param 標簽定義一些屬性并賦值磨总。另外嗦明,可以在property標簽中進行顯示迭代。
date 標簽:用來在JSP等視圖界面上顯示日期蚪燕,該日期的格式可以自己定義娶牌,其中id也是對需要顯示的日期進行標識定義,name是日期變量名馆纳。date標簽中還有一個比較特殊的屬性 nice 诗良。 這個是用來輸出當前日期和需要顯示的日期之間的時間差。特別是在開發(fā)需要開發(fā)倒計時這樣的功能時鲁驶,就顯得特別的有用鉴裹。
debug 標簽:給開發(fā)人員提供一個在視圖上調(diào)試代碼的功能。沒有太多,只需要在代碼的前面加上一句:<s:debug />即可径荔。
include 標簽:和JSP中的include功能相同督禽,都是在一個頁面包含另一個頁面文件顯示的內(nèi)容。但是至于在struts.xml中是不是需要再定義一個Action則取決于被包含的頁面上有沒有動態(tài)的數(shù)據(jù)猖凛。
push 標簽:將某個具體的值放在值棧的最頂處赂蠢。id屬性也是對需要放置在值棧棧頂?shù)闹档臉俗R定義。name是該值的名字辨泳。
set 標簽:對一個變量指定一個值虱岂。name屬性是對該變量名字的定義,value屬性就是這個給該變量指定的值菠红。如果不指定第岖,Struts2 是自動將值棧中棧頂?shù)闹抵贫ńo他。
url 標簽:生成一個URL地址试溯。value屬性是指定生成的URL地址蔑滓,但是它只顯示指定的Action或Jsp,而不是把URL的全路徑顯示出來遇绞,而action屬性則是制定URL地址是哪一個action键袱,然后將struts.xml 配置文件中該action的result中指定的路徑全部顯示出來,如果同時顯示定義action摹闽、value蹄咖,則struts2是以value指定為準。如果都不顯示定義付鹿,則以當前視圖界面的URL為指定生成的URL地址澜汤。
1.5 Struts2 表單標簽簡介
這個簡單的就不再說明了,但是有兩個復(fù)雜標簽真是醉生夢死啊舵匾。俊抵。。
doubleselect 和 optiontransferselect ?
太復(fù)雜坐梯。徽诲。。還沒懂
<s:head /> 生成頁面文件的HEAD部分烛缔,生成了對Ajax框架dojo的配置文件的引用或代碼馏段。
<s:token />防止重復(fù)提交一個表單數(shù)據(jù)。
1.6 非表單標簽簡介
大部分都是界面方面的標簽践瓷,這里就不再一一展示了。