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>表示的是可否使用表達式,大多數標簽都是為false。這里不是不能是使用表達式,而是恰恰相反表示可以使用表達式。<description></description>定義和前面介紹相同。
1.2 OGNL 表達式語言介紹
OGNL(Object Graph Navigating Language)對象導航語言。
Struts2 中將應用范圍中的數據以及Action處理的數據都存儲在一個區域中。Struts2種叫做 " valueStack ",中文名為:值棧。而OGNL就是從值棧中取出數據,并在某些條件下進行數據過濾和計算的表達式語言。
在OGNL中常使用? ^ $ 分別對應著:all first last.
1.3 Struts2 控制標簽簡介
Struts2的控制標簽主要用處是控制JSP等視圖中流程的轉向問題。這里筆者將一些常用的標簽進行說明。
1.3.1各個標簽進行說明
append標簽:將多個集合合并成一個集合
generator標簽:使用指定的分隔符將該字符串進行分隔
if、else、else if 標簽:進行一系列的判斷已達到目的。
iterator 標簽:對某個集合中所有屬性進行迭代遍歷
merge 標簽:與append標簽功能十分相似,但是集合中各個元素的排列順序是不同 的。
sort 標簽:對指定的數據集合進行排序或分類。當然,可以自定義自己的排序或分類條件。
subset 標簽:讀取子集條件將某集合的子集讀取出來。也可以自定義自己的讀取子集條件,這里就不得不引進decider,他就是讀取子集的條件,可以不寫,如果寫了,則表明一個Decider對象實例,需要開發者自行定義此對象實例。
1.4 Struts2 數據標簽簡介
action標簽:實現在JSP頁面中調用Struts2的Action。其中ID是需要調用的Action的標識定義,name才是Action的名字,executeResult屬性,它是一個布爾型的值,如果為true則表示在JSP頁面中返回調用的Action的結果視圖,反之則不顯示,默認值是false。還有一個是ignoreContextParams,該屬性是來決定視圖中請求的參數是否需要傳遞到Action中去。顧名思義,他也是一個布爾型的值,如果為false則需要把參數傳遞到Action中,反之則不傳遞。它的默認值是false。
bean 標簽:用來創建一個具體的JavaBean實例。其中id是對需要創建的JavaBean實例對象進行標識定義,name是Javabean的名字,即類名。在子標簽中可以使用 param 標簽定義一些屬性并賦值。另外,可以在property標簽中進行顯示迭代。
date 標簽:用來在JSP等視圖界面上顯示日期,該日期的格式可以自己定義,其中id也是對需要顯示的日期進行標識定義,name是日期變量名。date標簽中還有一個比較特殊的屬性 nice 。 這個是用來輸出當前日期和需要顯示的日期之間的時間差。特別是在開發需要開發倒計時這樣的功能時,就顯得特別的有用。
debug 標簽:給開發人員提供一個在視圖上調試代碼的功能。沒有太多,只需要在代碼的前面加上一句:<s:debug />即可。
include 標簽:和JSP中的include功能相同,都是在一個頁面包含另一個頁面文件顯示的內容。但是至于在struts.xml中是不是需要再定義一個Action則取決于被包含的頁面上有沒有動態的數據。
push 標簽:將某個具體的值放在值棧的最頂處。id屬性也是對需要放置在值棧棧頂的值的標識定義。name是該值的名字。
set 標簽:對一個變量指定一個值。name屬性是對該變量名字的定義,value屬性就是這個給該變量指定的值。如果不指定,Struts2 是自動將值棧中棧頂的值制定給他。
url 標簽:生成一個URL地址。value屬性是指定生成的URL地址,但是它只顯示指定的Action或Jsp,而不是把URL的全路徑顯示出來,而action屬性則是制定URL地址是哪一個action,然后將struts.xml 配置文件中該action的result中指定的路徑全部顯示出來,如果同時顯示定義action、value,則struts2是以value指定為準。如果都不顯示定義,則以當前視圖界面的URL為指定生成的URL地址。
1.5 Struts2 表單標簽簡介
這個簡單的就不再說明了,但是有兩個復雜標簽真是醉生夢死啊。。。
doubleselect 和 optiontransferselect ?
太復雜。。。還沒懂
<s:head /> 生成頁面文件的HEAD部分,生成了對Ajax框架dojo的配置文件的引用或代碼。
<s:token />防止重復提交一個表單數據。
1.6 非表單標簽簡介
大部分都是界面方面的標簽,這里就不再一一展示了。