溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

struts2之標(biāo)簽匯總

發(fā)布時(shí)間:2020-05-11 09:28:03 來源:億速云 閱讀:221 作者:Leah 欄目:web開發(fā)

今天小編就為大家?guī)硪黄猻truts2中標(biāo)簽介紹的文章。小編覺得挺不錯(cuò)的,為此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

目錄

1、Struts2標(biāo)簽庫(kù)

2、Struts2OGNL標(biāo)簽

  1OGNL中的集合(List/Map)

3、控制標(biāo)簽

4、數(shù)據(jù)標(biāo)簽

5、表單標(biāo)簽

  1)、表單標(biāo)簽的通用屬性

  2)、表單標(biāo)簽的namevalue屬性

  3)、 checkboxlist標(biāo)簽

  4)、 doubleselect標(biāo)簽

6、非表單標(biāo)簽

1、Struts2標(biāo)簽庫(kù)

Struts2可以將所有標(biāo)簽分成3類:

lUI標(biāo)簽:主要用于生成HTML元素的標(biāo)簽。

lUI標(biāo)簽:主要用于數(shù)據(jù)庫(kù)訪問,邏輯控制等標(biāo)簽。

lAjax標(biāo)簽:用于Ajax支持的標(biāo)簽。

對(duì)于UI標(biāo)簽,則有可以分為兩類:

表單標(biāo)簽:表單標(biāo)簽主要用與生成HTML頁面的from元素,以及普通表單元素的標(biāo)簽。

非表單標(biāo)簽:非表單標(biāo)簽主要用于生成頁面的樹、Tab頁等。

流程控制標(biāo)簽:主要包含用于實(shí)現(xiàn)分頁、循環(huán)等流程的標(biāo)簽。

數(shù)據(jù)訪問標(biāo)簽:主要包含用于輸出ValueStack中的值,完成國(guó)際化等功能的標(biāo)簽。

Struts2標(biāo)簽庫(kù)分類圖:


struts2之標(biāo)簽匯總

2、Struts2OGNL標(biāo)簽

OGNLObjectGraphic Navigation Language的縮寫,它是一個(gè)開源項(xiàng)目。Struts2框架使用OGNL作為默認(rèn)的表達(dá)式語言。

在傳統(tǒng)的OGNL表達(dá)式求值中,系統(tǒng)會(huì)假設(shè)系統(tǒng)只要一個(gè)根對(duì)象,但Struts2Stack Context需要多個(gè)“根”對(duì)象,其中ValueStacke只是多個(gè)“根”對(duì)象的其中之一。

假設(shè):使用標(biāo)簽OGNL表達(dá)式求值,不是用Struts2OGNL表達(dá)式是求之。如果系統(tǒng)的Context中包含兩個(gè)對(duì)象:foo對(duì)象,它在Context中的名字為foo;bar對(duì)象, 并且它在Context中的名為bar。將foo對(duì)象設(shè)置成Context的根對(duì)象。

返回foo.getBlah()方法的返回值#foo.blah

返回bar.getBlah()方法的返回值#bar.blah

可以看出ONGL表達(dá)式的語法非正常簡(jiǎn)潔。


Struts2不知根據(jù)表達(dá)式從ValueStack中取的對(duì)象,還可以直接從對(duì)象中獲取屬性。Struts2提供了一個(gè)特殊的OGNL ProperAccessories(屬性訪問器),它可以自動(dòng)搜尋棧內(nèi)的所有實(shí)體(從上到下),直接找到求值表達(dá)式匹配的屬性。

Struts2使用標(biāo)準(zhǔn)的Context來進(jìn)行OGNL表達(dá)式求值,OGNl處理的頂級(jí)對(duì)象是一個(gè)Context,這個(gè)Context對(duì)象就是一個(gè)Map類型實(shí)例,在該OGNLContext中,有一個(gè)對(duì)象,這個(gè)根對(duì)象就是OGNL ValueStack,如果需要訪問ValueStack里的屬性,例如:#取出Valuestack中的bar屬性:${bar};

除此之外:Struts2還提供了一些命名對(duì)象,這些命名對(duì)象與根對(duì)象無關(guān),它們只是存在于Stack Context中。所以,訪問這些對(duì)象實(shí)現(xiàn)需要使用#前綴來指明。

1、paramenters對(duì)象:用于訪問HTTP請(qǐng)求參數(shù),

2、request對(duì)象:用于訪問HttpServletRequset的屬性(Attribute)Map。例如#request.userName

3、Session對(duì)象:用于訪問HttpSession的屬性。例如#session.userName

4、Application對(duì)象:用于訪問ServletContext的屬性。例如#application.userName

5、Attr對(duì)象:如果可以訪問到,則訪問PageContext,否則將依次搜索HttpServletRequsetHttpSession,ServletContext中的屬性。

值得注意的是:當(dāng)系統(tǒng)創(chuàng)建Action實(shí)例后,該Action實(shí)例已經(jīng)被保存到ValueStack中,故無需書寫#即可訪問Action屬性。


1OGNL中的集合(List/Map)

直接生成一個(gè)List類型的集合,該List對(duì)象中包含三個(gè)元素,都個(gè)元素之間以英文逗號(hào)隔開;

例:<s:setname="list" value="{'song','li','xing'}" />

直接生成一個(gè)Map類型的集合,該Map對(duì)象中每個(gè)Key-value對(duì)象之間以英文冒號(hào)隔開:多項(xiàng)之間以英文逗號(hào)隔開。

例:<s:setname="foobar" value="#{'1':'song', '2':'li', '3':'xing'}" />

Set標(biāo)簽用于蔣某個(gè)值放入指定范圍:


Scope:指定變量被放置的范圍,該屬性可以接受aplication、session、requset、pageaction。如果該屬性,則默認(rèn)在OGNL Context中。

Value:賦給變量的值,如果沒有設(shè)置該屬性,則將ValueStack棧頂?shù)闹蹈督o變量。


對(duì)于集合,OGNL提供了兩個(gè)與元素:innot in,其中in判斷某個(gè)元素是否在指定集合中;not in則用于判斷某個(gè)元素是否不在指定集合中。

in表達(dá)式:

<s:iftest="'foo' in {'foo','bar'}"> </s:if><s:else>不在</s:else>  

not in表達(dá)式:

<s:iftest="'foo' not in {'foo','bar'}">     不在  </s:if> <s:else>     </s:else>


OGNL還允許通過某個(gè)規(guī)則取得集合的自己,取得集合子集有三個(gè)操作符:

a、?:取出所有符合選擇邏輯的元素

b^:取出符合集合邏輯的第一個(gè)元素

c、$:取出符合選擇邏輯的最后一個(gè)元素


例:<s:iterator value="books. {?#this.price >35}">      

<s:property value="title" /> - $<s:propertyvalue="price" /><br>

</s:iterator>


在上面代碼中,直接在集合后緊跟.{}運(yùn)算符表明用于取出該集合的子集,{}內(nèi)的表達(dá)式用于獲取符合集合的元素,this指的是為了從大集books刷選數(shù)據(jù)到小集合,需要對(duì)大集合books進(jìn)行迭代,this代表當(dāng)前迭代的元素。表達(dá)式用于獲取集合中價(jià)格大于35的書的集合。

3、控制標(biāo)簽

Struts2的非UI標(biāo)簽包括控制標(biāo)簽和數(shù)據(jù)標(biāo)簽,主要用于完成流程控制,以及對(duì)ValueStack的控制,數(shù)據(jù)標(biāo)簽主要用于訪問ValueStack中的數(shù)據(jù);控制標(biāo)簽可以完成輸出流程控制,例如分支,循環(huán)等操作,也可以對(duì)集合的合并,排列。

控制標(biāo)簽有:

1)if:用于控制選擇器輸出的標(biāo)簽;

2)、else if: if標(biāo)簽結(jié)合使用,用于控制選擇輸出的標(biāo)簽;

3)、else:if標(biāo)簽結(jié)合使用,用于控制選擇輸出的標(biāo)簽;

4)append:將多個(gè)集合拼接成一個(gè)新的集合;

5)generator:字符解析器,用于將一個(gè)字符串解析成一個(gè)集合;

6)、Iterator:這是一個(gè)迭代器,用于將集合迭代輸出;

7)merge:用于多個(gè)集合拼接陳一個(gè)新的集合。但與appernd的拼接方式有所不同。

8)、sort:用于對(duì)集合進(jìn)行排序;

9)、Subset:截取集合的部分元素,形成新的子集;


If/elseif/else標(biāo)簽:

這三個(gè)標(biāo)簽都是用于進(jìn)行分支控制的,他們都是用于根據(jù)一個(gè)Boolean表達(dá)式的值,來確定是否計(jì)算、輸出標(biāo)簽體的內(nèi)容。

例:<s:set name="age" value="21" />

<s:if test="#age==23">23</s:if><s:elseif test="#age==21">21</s:elseif><s:else> 都不等</s:else>


iterator標(biāo)簽:

用于對(duì)集合進(jìn)行迭代,這里集合包含List、Set和數(shù)組,也可對(duì)Map類型的對(duì)象進(jìn)行迭代輸出。Valueid、Status三個(gè)屬性都是可選屬性,如果沒有指定value屬性,則使用ValueStack棧頂?shù)募稀?/span>

例:

<s:iterator var="u"value="users" status="sts">

   <s:property value="#sts"/>

   <s:property value="#u"/><br/>

</s:iterator>

如果為<s:iterator/>標(biāo)簽指定status屬性,即每次迭代時(shí)都會(huì)有一個(gè)IteratorStatus實(shí)例,該實(shí)例的方法包含如下幾個(gè):

2Int getCount():返回當(dāng)前迭代了幾個(gè)元素;

2Int getIndex():返回當(dāng)前元素的索引;

2Boolean isEven(): 當(dāng)前元素的索引是否是偶數(shù);

2Boolean isFirst():當(dāng)前元素是否是第一個(gè)元素;

2Boolean isLast():當(dāng)前元素是否是最后一個(gè)元素;

2Boolean isOdd():當(dāng)前元素的索引是否是奇數(shù);


append標(biāo)簽:

用于將多個(gè)集合拼接起來,組成一個(gè)新的集合,通過陣中的拼接,從而允許通過一個(gè)<s:iterator ./>標(biāo)簽就完成對(duì)多個(gè)集合的迭代。

merge標(biāo)簽的用法看起來很像append標(biāo)簽,也是用于將多個(gè)集合拼接成一個(gè)集合但是采用的拼接方式與append不同,append是以集合位順序的拼接,merge是以元素位順序拼接;


generator標(biāo)簽:

指定字符串按指定分隔符分隔成多個(gè)子串,臨時(shí)生成多個(gè)子串可以使用iterator標(biāo)簽來迭代輸出??梢岳斫馕?/span>generator將一個(gè)字符串轉(zhuǎn)化成一個(gè)集合,在該標(biāo)簽的標(biāo)簽體內(nèi),整個(gè)臨時(shí)生成的集合將位于Valuestack的頂端,但一旦該標(biāo)簽結(jié)束,該集合將被移除Valuestack

屬性有:

count:指定生成集合中元素的總數(shù);

separator:指定用于解析字符串的分隔符;

val:指定被解析的字符串;

converter:制定一個(gè)轉(zhuǎn)化器,該轉(zhuǎn)化器負(fù)責(zé)將集合中的每個(gè)字符串轉(zhuǎn)化成對(duì)象;

id:可選屬性,制定了該屬性,則將生成的集合放在pageContext屬性中;


Subset標(biāo)簽:

用于取得集合的子集,該標(biāo)簽的底層通過org.apache.Struts2.util.Subset.IteratorFilter類提供實(shí)現(xiàn)。屬性有:

count:指定生成集合中元素的總數(shù),如果不指定該屬性,默認(rèn)取得源集合的全部元素。還有source,startdecider屬性;

subset標(biāo)簽生成的子集放在ValueStack的棧頂,如果該標(biāo)簽結(jié)束后,該標(biāo)簽生成的子集將被移除出ValueStack棧。


Sort標(biāo)簽:

指定集合元素進(jìn)行排序,進(jìn)行排序是=時(shí),必須提供自己的排序規(guī)則,即使實(shí)現(xiàn)自己的Comparator,自己的Comparator需要實(shí)現(xiàn)java.util.Comparator接口。屬性有:

Comparator:該屬性指定進(jìn)行排序的Comparator實(shí)例;

source:該屬性指定排序的集合。如果不指定該屬性,則對(duì)ValueStack棧頂?shù)募线M(jìn)行排序。

4、數(shù)據(jù)標(biāo)簽

數(shù)據(jù)標(biāo)簽主要用于提供各種數(shù)據(jù)范文相關(guān)的功能,包含顯示一個(gè)Action里的屬性,以及生成國(guó)際化輸出等功能,數(shù)據(jù)標(biāo)簽主要包含:action,beandate,debug,i18n,include,param,push,set,text,urlproperty;


1 action:用于直接在JSP頁面直接調(diào)用一個(gè)Action,通過指定executeResult參數(shù),還可以將該Action的處理結(jié)果包含到本頁面中來。如果指定了executeResult參數(shù)的屬性值為true,該標(biāo)簽還會(huì)把Action的處理結(jié)果包含到本頁面中來。屬性有:

2id:該屬性會(huì)作為該Action的應(yīng)用ID

2name:指定該標(biāo)簽調(diào)用哪個(gè)Action

2nameSpace:指定該標(biāo)簽調(diào)用的Action所在的namespace

2executeResult:該是屬性指定是否要將action 的處理結(jié)果頁面包含到本頁面。默認(rèn)值為false,即不包含。

2ignoreContextParams:指定該頁面中的參數(shù)是否需要轉(zhuǎn)入調(diào)用Action,該參數(shù)的默認(rèn)值是false,即將本頁面的請(qǐng)求參數(shù)傳入被調(diào)用的Action。


2bean:用于創(chuàng)建一個(gè)JavaBEan實(shí)例,如果指定id屬性,則可以將創(chuàng)建的JavaBean實(shí)例放入StackContext中。屬性:

name:指定要實(shí)例化的JavaBean的實(shí)現(xiàn)類;

id:該屬性是個(gè)可選屬性,指定該屬性后該實(shí)例JavaBean實(shí)例會(huì)被放入到Stack Context(并不是ValueStack) ,從而允許直接通過該id屬性來訪問該JavaBean實(shí)例;


3date:用于格式化輸出一個(gè)日期。屬性有:

format:根據(jù)該屬性指定的格式來個(gè)事化日期;

nice:該屬性只能為truefalse,它用于指定是否輸出指定日期和當(dāng)前時(shí)刻之間的時(shí)差

name指定要格式化的日期值;

id:制定引用該元素的id值。


4debug:主要用于輔助調(diào)試,在頁面上生成一個(gè)調(diào)試鏈接,通過該鏈接到ValueStackStack Context中的所有的值信息;

例:<s:debug />


5i18n:用于制定國(guó)際化資源的文件的baseName


6include:用于JSP頁面中包含其他的JSPServlet資源,屬性:

value:指定需要被包含的JSP頁面或者Servlet;

id指定該標(biāo)簽的ID引用

例:<s:includevalue=include-file.jsp>

<s:param name=”author” value=”yeeku”/>

</s:inlcude>


7  param:通常用作bean標(biāo)簽,url標(biāo)簽的子標(biāo)簽,屬性:

Name:指定需要設(shè)置參數(shù)的參數(shù)名;

value:指定需要設(shè)置參數(shù)的參數(shù)值;

id:指定引用該元素的ID。

例:<s:param name=color>blue</param>

<s:paramname=color value=blue/>


8push:用于將某個(gè)值放到ValueStack的棧頂。屬性有:

value:該屬性指定需要放到ValueStack棧頂?shù)闹担?/span>

id:指定引用該元素的ID

例:<s:pushvalue=#p>

<s:property value=”name”/><br>

</s:push>


9set:用于設(shè)置一個(gè)新變量,并可以將新變量放入到指定的范圍內(nèi),屬性有

name:重新生成的新變量的名字;

scope:可選屬性,指定新變量被放置的范圍,屬性值有applicationsession、requset、pageaction,沒有指定屬性,則默認(rèn)為放置到Stack Context中;

value:指定將賦值給變量的值,如果沒有制定該屬性,則將ValueStack棧頂?shù)闹Ц督o行變量;

id:指定該元素的引用ID

例:<s:set value=#p name=xxx/>


10text:用于輸出國(guó)際化消息


11url:用于生一個(gè)URL地址,屬性有:

includeParams該屬性指定包含的參數(shù),屬性值只能為none,get,all

scheme用于設(shè)置scheme屬性;

value指定生成URL的地址值,如果value不提供就有action屬性指定的Action作為URL地址;

action指定生成URL的地址為那個(gè)Action,如果不提供,就用valuezuoweiURL的地址值namespace/method;

encode指定是否需要encode指定是否需要encode請(qǐng)求屬性;includeContext:指定是否需要將上下文包含在URL地址中;anchor指定URL的錨點(diǎn)id;


12property:用于生成輸出某個(gè)值,包括輸出ValueStack,Stack,ContextAction Context中得值。屬性:

default如果需要輸出的屬性值為null,則顯示的default屬性指定的值;

espcape指定是否escapeHTML代碼;

value 到指定需要輸出的屬性值,如果沒有指定該屬性,則默認(rèn)輸出ValueStack棧頂?shù)闹担?/span>

id指定該元素的標(biāo)識(shí)。


5、表單標(biāo)簽

Struts2的表單標(biāo)簽,可分為兩種:form表單本身和單個(gè)表單元素的標(biāo)簽。Form標(biāo)簽本身的行為不同于表單元素的標(biāo)簽。Struts2的表單元素標(biāo)簽都包含了非常多的屬性,但有很多屬性完全是通用的。

1)、表單標(biāo)簽的通用屬性

所有表單標(biāo)簽處理類都繼承了UIBean類,UIBean包含了一些通用屬性,分為3種:

2模板相關(guān)屬性

2JavaScript相關(guān)屬性

2通用屬性

除此之外,所有表單元素標(biāo)簽都存在一個(gè)特殊屬性:form,通過該屬性可以實(shí)現(xiàn)表單元素和表單之間的交互。例如,我們可以通過${parameters.form.id}來取得表單元素所在表單的ID。


下面是表單標(biāo)簽的通用屬性。

模板相關(guān)的通用屬性如下:

2templateDir:指定該表單所用的模板文件目錄。

2theme:指定該表單所用的主題

2template:指定該表單所用的模板

JavaScript相關(guān)的通用屬性如下:

2onclick:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上單擊時(shí)觸發(fā)的JavaScript函數(shù)。

2ondbclick:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上雙擊時(shí)觸發(fā)的JavaScript函數(shù)。

2onmousedown:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上按下時(shí)觸發(fā)的JavaScript函數(shù)。

2onmouseup:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上松開時(shí)觸發(fā)的JavaScript函數(shù)。

2onmouseover:指定鼠標(biāo)在該標(biāo)簽生成的表單元素上懸停時(shí)觸發(fā)的JavaScript函數(shù)。

2onmouseout:指定鼠標(biāo)移除該標(biāo)簽生成的表單元素時(shí)觸發(fā)的函數(shù)。

2onfocus:指定該標(biāo)簽生成的表單元素得到焦點(diǎn)時(shí)觸發(fā)的函數(shù)。

2onblur:指定該標(biāo)簽生成的表單元素失去焦點(diǎn)時(shí)觸發(fā)的函數(shù)。

2onkeypress:指定單擊鍵盤上某個(gè)鍵時(shí)觸發(fā)的函數(shù)。

2onkeyup:指定松開鍵盤上某個(gè)鍵時(shí)觸發(fā)的函數(shù)。

2onkeydown:指定按下鍵盤上某個(gè)鍵時(shí)觸發(fā)的函數(shù)。

2onselect:對(duì)下拉列表項(xiàng)等可以選擇表單的元素,指定選中該元素時(shí)觸發(fā)的JavaScript函數(shù)。

2onchange:對(duì)于文本框等可以接受輸入的表單元素,指定當(dāng)值改變時(shí)觸發(fā)的javaScript函數(shù)。


因?yàn)?/span>Html本身的限制,并不是每個(gè)Html元素都可以觸發(fā)以上的所有函數(shù)。因此,上面的屬性并不是對(duì)Struts2 的每個(gè)標(biāo)簽都有效。


Struts2還允許為表單元素設(shè)置提示,單鼠標(biāo)在這些元素上停懸時(shí),系統(tǒng)將出現(xiàn)提示。Struts2將這種特性稱為Tooltip。相關(guān)的通用屬性如下:

2tooltip:設(shè)置此組件的Tooltip。

2tooltipIcon:設(shè)置Tooltip圖標(biāo)的URL路徑。


2tooltipAboveMousePointer:是否在光標(biāo)位置上顯示Toopltip。也可以通過設(shè)置tooltipOffseY屬性,設(shè)置Tooltip與光標(biāo)位置的垂直位移。

2tooltipBgColor:設(shè)置Tooltip的背景色。

2tooltipBgImg:設(shè)置Tooltip的背景圖片。

2tooltipBorderWidth:設(shè)置Tooltip邊框的寬度

2)、表單標(biāo)簽的namevalue屬性

Namevalue屬性之間存在一個(gè)獨(dú)特的關(guān)系:因?yàn)楸韱卧氐?/span>name屬性會(huì)映射到Action的屬性當(dāng)對(duì)應(yīng)的Action已經(jīng)被實(shí)例化,且對(duì)應(yīng)屬性有值時(shí),表單元素會(huì)顯示出該屬性的值,該值就是表單元素的value值。

3)、 checkboxlist標(biāo)簽

checkboxlist標(biāo)簽可以一次創(chuàng)建多個(gè)復(fù)選框,要根據(jù)list屬性指定的集合。還有兩個(gè)常用的屬性。

a、 listKey:該屬性指定集合元素中的某個(gè)屬性作為復(fù)選框的value

b、 listValue:該屬性指定集合元素中的某個(gè)屬性作為復(fù)選框的標(biāo)簽。

4)、 doubleselect標(biāo)簽

doubleselect標(biāo)簽會(huì)生成一個(gè)級(jí)聯(lián)列表框(會(huì)生成兩個(gè)下拉列表框),當(dāng)選第一個(gè)列表框時(shí),第二個(gè)的內(nèi)容也會(huì)隨之改變。常用屬性如下:

2list:指定用于輸出第一個(gè)下拉列表框中選項(xiàng)的集合

2listKey:該屬性指定集合元素中的某個(gè)屬性作為復(fù)選框的value

2listValue:該屬性指定集合元素中的某個(gè)屬性作為復(fù)選框的標(biāo)簽。

2doubleList:指定用于輸出的第一個(gè)下拉列表框中選項(xiàng)的集合

2doubleList key:該屬性指定集合元素中的某個(gè)屬性作為復(fù)選框的value

2doubleList Value:該屬性指定集合元素中的某個(gè)屬性作為復(fù)選框的標(biāo)簽。

2doubleName:指定第二個(gè)下拉列表框的name屬性。


5)、 head標(biāo)簽


6)、optiontransferseselect標(biāo)簽


7)、 select標(biāo)簽


8)、 radio標(biāo)簽


9)、 optgroup標(biāo)簽


10)、 token標(biāo)簽


11)、 updownselect標(biāo)簽

6、非表單標(biāo)簽

1)、 actionerroractionmessage標(biāo)簽


2)、 component標(biāo)簽


3)、 treetreenode

以上就是struts2中標(biāo)簽介紹的匯總,內(nèi)容較為全面,而且我也相信有相當(dāng)?shù)囊恍┕ぞ呖赡苁俏覀內(nèi)粘9ぷ骺赡軙?huì)見到或用到的。通過這篇文章,希望你能收獲更多。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI