Struts2標(biāo)簽總結(jié)

在這里總結(jié)一下Struts2標(biāo)簽

一:常用的標(biāo)簽

?1高每, if……elseif……else,用來(lái)控制選擇輸出的標(biāo)簽沉馆;

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>s:if標(biāo)簽測(cè)試</title>

</head>

<body>

<!-- 在Stack Context中定義一個(gè)age屬性,其值為29 -->

???? <s:set name="age" value="29"/>

<!-- 如果Stack Context中的age屬性大于60 -->

????? <s:if test="#age>60">?老年人? </s:if>

<!-- 如果Stack Context中的age屬性大于35 -->

????? <s:elseif test="#age>35">? 中年人? </s:elseif>

<!-- 如果Stack Context中的age屬性大于15 -->

????? <s:elseif test="#age>15">?青年人? </s:elseif>

????? <s:else>?少年?</s:else>

</body></html></span>

2.append:用于將多個(gè)集合拼接成一個(gè)新的集合:

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">?

<head>?

<title>使用s:append標(biāo)簽拼接集合和Map</title>

</head>

<body>

<!-- 使用append將List和Map集合拼接在一起新集合實(shí)際上是Map集合颊糜,其名字為newList -->

<s:append var="newList">

<s:param value="#{'Java':'ljh',? 'C#':'lsz'}" />?

<s:param value="#{'0629',??'0404'}" />?

</s:append>?

<table border="1" width="280">?

<!-- 使用iterator迭代newList集合 -->

<s:iterator value="#newList" status="st">?

<tr <s:if test="#st.odd">? style="background-color:#bbbbbb"</s:if>>

?????? <td><s:property value="key"/></td>?

?????? <td><s:property value="value"/></td>

</tr>?</s:iterator>? </table>? </body>? </html>? </span>

3.generator:是一個(gè)字符串解析器士骤,用于將一個(gè)字符串解析成一個(gè)集合;

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用s:generator生成集合</title>

</head>

<body>

<table border="1" width="240">

<!-- 使用generator標(biāo)簽將指定字符串解析成Iterator集合

在generator標(biāo)簽內(nèi)矾利,得到的List集合位于ValueStack頂端 -->

<s:generator val="'Java? ,C#,? C++'" separator=",">

<!-- 沒(méi)有指定迭代哪個(gè)集合,直接迭代ValueStack頂端的集合 -->

<s:iterator status="st">

<tr <s:if test="#st.odd">

style="background-color:#bbbbbb"</s:if>>

<td><s:property/></td>

</tr>

</s:iterator>? </s:generator>

</table>

</body>

</html></span>

4.iterator:是一個(gè)迭代器馋袜,用于將集合迭代輸出男旗,這個(gè)比較實(shí)用

5.merge:也是用于將多個(gè)集合拼接成一個(gè)新的集合,但是append不同欣鳖。append是將集合依次排列進(jìn)行拼接察皇。merge是第一個(gè)集合的一個(gè),第二集合的第一個(gè)观堂。让网。。师痕。。第一集合的第二個(gè)而账,第二集合的第二個(gè)胰坟。。

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用s:merge標(biāo)簽迭代Map</title>

</head>

<body>

<s:merge id="newList">

???? <s:param value="#{'Java':'ljh',?'C#':'lsz'}" />

??? <s:param value="#{'0629',?'0404'}" />

</s:merge>

?

<table border="1" width="320">

?????? <s:iterator value="#newList" status="st">

????????? ??? <tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>>

???????????????? ?<td><s:property value="key"/></td>

?????????????? ? <td><s:property value="value"/></td>

???????????? </tr>

???? </s:iterator>

</table>

</body>

</html></span>

6.sort:這個(gè)標(biāo)簽用于將集合進(jìn)行排序;

<span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>使用s:sort對(duì)集合元素進(jìn)行排序</title>

</head>

<body>

<!-- 定義一個(gè)Comparator實(shí)例 -->

<s:bean var="mycomparator" name="org.ljh.app.util.MyComparator"/>

<!-- 使用自定義的排序規(guī)則對(duì)目標(biāo)集合進(jìn)行排序 -->

<s:sort source="{'Java','C#','C++','Ajax','XML'} comparator="#mycomparator var="sortedList"/>

輸出page范圍的sortedList屬性:<br/>

${pageScope.sortedList}

<table border="1" width="300">

<!-- 迭代page范圍內(nèi)的sortedList屬性 -->

<s:iterator status="st" value="#attr.sortedList">

<tr <s:if test="#st.odd">

style="background-color:#bbbbbb"</s:if>>

<td><s:property/></td>

</tr>

</s:iterator>

</table>

</body>

</html></span>

?

7.subset:這個(gè)標(biāo)簽用于截取集合的部分元素,形成新的子集合笔横。

  • <span style="font-size:18px;"><html xmlns="http://www.w3.org/1999/xhtml">
  • <head>

    <title>使用s:subset標(biāo)簽截取集合元素</title>

    </head>

    <body>

    <!-- 定義一個(gè)Decider Bean -->

    <s:bean var="mydecider" name="org.ljh.app.util.MyDecider"/>

    <!-- 使用自定義的Decider實(shí)例來(lái)截取目標(biāo)集合竞滓,生成子集

    指定var屬性,將生成的Itertor放入pageScope中 -->

    <s:subset source="{<span style="font-family: SimSun; ">'Java'</span></span><pre name="code" class="html">

    <span style="font-size:18px;"> ,'C#'? ,'C++'?,'Ajax'?,'XML'</span></pre><span style="font-size:18px;">}" decider="#mydecider"var="newList"/>

    直接輸出page范圍的newList屬性:

    <br/>${pageScope.newList}<table border="1" width="240"><!-- 迭代page范圍內(nèi)的newList屬性 -->

    <s:iterator status="st" value="#attr.newList"><tr <s:if test="#st.odd">style="background-color:#bbbbbb"</s:if>><td><s:property/></td></tr></s:iterator></table></body></html></span>

  • <span style="font-size:18px;">//用戶自定義的Decider類(lèi)吹缔,實(shí)現(xiàn)了SubsetIteratorFilter.Decider接口
  • ?

    public class MyDecider

    implements SubsetIteratorFilter.Decider? {

    //實(shí)現(xiàn)Decider接口必須實(shí)現(xiàn)的decide方法商佑,

    //該方法決定集合中的元素是否被選入子集

    public boolean decide(Object element) throws Exception?{

    String str = (String)element;

    //如果集合元素(字符串)中包含Java EE子串,即可被選入子集

    return str.indexOf("Java") > 0;?

    }

    }

    </span>

    二:數(shù)據(jù)標(biāo)簽厢塘,自我感覺(jué)數(shù)據(jù)標(biāo)簽用得不是很多:

    action標(biāo)簽茶没,可以允許在jsp頁(yè)面中直接調(diào)用Action,在調(diào)用Action的時(shí)候晚碾,可以指定需要被調(diào)用的Action的name和namespace抓半。

    如果指定了executeResult參數(shù)的屬性值為true,該標(biāo)簽會(huì)Action的處理結(jié)果(視圖資源)包含到本頁(yè)面中格嘁。

    使用action標(biāo)簽指定屬性有:

    id: 可選屬性,作為該Action的引用ID

    name:必選屬性,指定調(diào)用Action

    namespace:可選屬性,指定該標(biāo)簽調(diào)用Action所屬namespace

    executeResult:可選屬性,指定是否將Action的處理結(jié)果包含到本頁(yè)面中.默認(rèn)值為false,不包含.

    <s:actionname="actionTag!default" executeResult="true"namespace="/generic/dataTag">

    <paramname="username" value=" "/>給action屬性復(fù)制

    <paramname="email" value=" "/>

    </s:action>

    bean 實(shí)例化一個(gè)javabean 使用Param傳入屬性 (get/set)

    name 實(shí)例化的javabean的實(shí)現(xiàn)類(lèi)

    var可選 指定則實(shí)例放入棧的上下文 允許用var直接使用

    注意:bean標(biāo)簽內(nèi)創(chuàng)建javabean實(shí)例位于棧頂笛求,bean結(jié)束移除值棧,除非指定var則通過(guò)上下文訪問(wèn)

    ?

    date格式化輸出日期糕簿,指定日期與當(dāng)天日期的時(shí)間差

    formart 指定格式格式日期 注意:不欲nice同時(shí)指定探入,如果同時(shí)指定。則忽略formart

    nice 是否指定日期與當(dāng)前日期差值

    name必填 格式化的日期值

    var 對(duì)象放入值棧懂诗,在date結(jié)束可以通過(guò)該屬性的值引用

    <constanname="sruts.custom.i18n.resources"value="ApplicationResources" />

    <s:datename="#date" formart="yyyy年MM月dd日"/>

    ?

    debug標(biāo)簽:

    用于輔助調(diào)試.在頁(yè)面上生成超鏈接蜂嗽,可以查看值棧,和StackContext中所有信息

    id 鈣元素的一個(gè)引用id

    ?

    include:講一個(gè)jsp或者servlet包含到當(dāng)前頁(yè)面

    value 包含的JSP或Servlet响禽。

    可以指定多個(gè)param子標(biāo)簽傳參

    ?

    param標(biāo)簽:為其它標(biāo)簽提供參數(shù)

    name設(shè)置的參數(shù)的名字 (set) value設(shè)置的參數(shù)的值

    用法①<paramname="color">

    ②<paramname="color" value=" 'color' "/>

    ?

    push:將某個(gè)值放到值棧的棧頂

    value必填:指定放入值棧的棧值徒爹!但是只在push標(biāo)簽內(nèi),一旦超出芋类,剛剛放入的對(duì)象立即被移除

    用法:

    <s:pushvalue="#session.user">

    <s:property value="username">

    <s:property value="sex">

    <s:property value="emai">

    </s:push>

    ?

    set:用于將某個(gè)只放入指定范圍內(nèi)

    定義一個(gè)新變量隆嗅。將已有值放入新變量。并放入指定范圍

    value 指定一個(gè)表達(dá)式侯繁,計(jì)算的結(jié)果賦變量胖喳,如果沒(méi)有指定value屬性,默認(rèn)將棧頂對(duì)象賦給變量贮竟。

    var 指定該屬性丽焊,改值放入到值棧中

    scope指定新變量防止的范圍,可選application咕别,session request page action(默認(rèn)) 如果指定為action放入request并放入action值棧

    name變量名字

    ?

    i18n text標(biāo)簽 支持國(guó)際化信息

    i18n將資源包放入值棧 name資源屬性名字 指定資源包的基名

    text從資源包中獲取信息 title 獲取鍵為title的消息

    通過(guò)i18n放入的資源包只能在標(biāo)簽體內(nèi)訪問(wèn)

    text可以單獨(dú)使用技健。首先查找資源包的基名與調(diào)用action類(lèi)名相同的資源包,意味著惰拱,可以在action類(lèi)所在的包中創(chuàng)建與Action類(lèi)名相同的的資源文件雌贱,可以嵌套param指定消息文本的參數(shù),順序?qū)?yīng)參數(shù)索引順序

    <s:i18nname="AppliactionResources">

    <s:textname="title"/> name資源屬性名字 id指定屬性,文本內(nèi)容不會(huì)輸出欣孤,而是保存在值棧中馋没,在text結(jié)束后,可以通過(guò)屬性的值來(lái)引用

    </s:i18n>

    ?

    public class TextTagAction extends ActionSupport{} 《topic-21》

    ?

    url標(biāo)簽用于創(chuàng)建URL地址降传,定義param附加請(qǐng)求參數(shù)

    action value 指定生成URL的Action和URL篷朵。前一個(gè)會(huì)附加.action。如果兩個(gè)都沒(méi)有則以當(dāng)前地址為地址值

    achor 可選 指定url的錨點(diǎn)

    encode 可選 對(duì)指定參數(shù)進(jìn)行編碼 不支持cookie改寫(xiě)url支持session

    escapeamp 是否將&轉(zhuǎn)義為&amp

    var 將鏈接值放入到值棧

    includeContext是否將當(dāng)前上下文包含在URL地址

    includeParams是否包含請(qǐng)求參數(shù)婆排,改屬性值只能為none声旺,getall

    method 指定使用action的方法

    namespace指定action所屬的命名空間

    portletmode指定portle模式

    scheme指定url使用的協(xié)議

    ?

    ?

    property標(biāo)簽,用于輸出值棧中的對(duì)象的屬性值

    value指定要輸出的對(duì)象屬性 沒(méi)有則輸出棧頂

    default 可選 value為null輸出改值

    escape 是否專(zhuān)一輸出內(nèi)容中的html

    ?

    ?

    ??? 三泽论,表單標(biāo)簽艾少,這個(gè)就是form下的Struts2提供的標(biāo)簽,供界面顯示用的翼悴,其實(shí)用的更少缚够,一般情況下,我們都會(huì)拿easy-ui,dwz等一些專(zhuān)門(mén)做界面的框架進(jìn)行替換鹦赎。其實(shí)說(shuō)簡(jiǎn)單一點(diǎn)就像HTML里邊的各種標(biāo)簽谍椅,這里不再進(jìn)行贅述,用的時(shí)候我們上網(wǎng)上查即可古话,這里提供網(wǎng)上的一些雏吭,大家可以看下:

    Struts2常用表單標(biāo)簽

    ?

    四,非標(biāo)單標(biāo)簽陪踩,主要用于生成一些非表單的可視化元素杖们,例如tab頁(yè)面,輸出HTML頁(yè)面的樹(shù)形結(jié)構(gòu)等肩狂,當(dāng)然也用來(lái)顯示Action里封裝的信息摘完。簡(jiǎn)單介紹一下:

    標(biāo)簽名

    含義

    actionerror

    如果Action實(shí)例的getActionErrors()方法返回不為null,則該標(biāo)簽負(fù)責(zé)輸出該方法的返回的信息。

    actionmessage

    和上邊一樣傻谁,用于返回GetActionMessage()的信息

    component

    用于生成一個(gè)自定義組件孝治。可以利用寫(xiě)好模版审磁,主題等

    fielderror

    如果Action實(shí)例存在表單域的類(lèi)型轉(zhuǎn)換錯(cuò)誤谈飒,校驗(yàn)錯(cuò)誤,該標(biāo)簽負(fù)責(zé)輸出這些錯(cuò)誤信息态蒂。

    最后編輯于
    ?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
    • 序言:七十年代末杭措,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子钾恢,更是在濱河造成了極大的恐慌瓤介,老刑警劉巖吕喘,帶你破解...
      沈念sama閱讀 222,464評(píng)論 6 517
    • 序言:濱河連續(xù)發(fā)生了三起死亡事件赘那,死亡現(xiàn)場(chǎng)離奇詭異刑桑,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)募舟,發(fā)現(xiàn)死者居然都...
      沈念sama閱讀 95,033評(píng)論 3 399
    • 文/潘曉璐 我一進(jìn)店門(mén)祠斧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人拱礁,你說(shuō)我怎么就攤上這事琢锋。” “怎么了呢灶?”我有些...
      開(kāi)封第一講書(shū)人閱讀 169,078評(píng)論 0 362
    • 文/不壞的土叔 我叫張陵吴超,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鸯乃,道長(zhǎng)鲸阻,這世上最難降的妖魔是什么? 我笑而不...
      開(kāi)封第一講書(shū)人閱讀 59,979評(píng)論 1 299
    • 正文 為了忘掉前任缨睡,我火速辦了婚禮鸟悴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奖年。我一直安慰自己细诸,他們只是感情好,可當(dāng)我...
      茶點(diǎn)故事閱讀 69,001評(píng)論 6 398
    • 文/花漫 我一把揭開(kāi)白布陋守。 她就那樣靜靜地躺著震贵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪水评。 梳的紋絲不亂的頭發(fā)上猩系,一...
      開(kāi)封第一講書(shū)人閱讀 52,584評(píng)論 1 312
    • 那天,我揣著相機(jī)與錄音之碗,去河邊找鬼蝙眶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褪那,可吹牛的內(nèi)容都是我干的幽纷。 我是一名探鬼主播,決...
      沈念sama閱讀 41,085評(píng)論 3 422
    • 文/蒼蘭香墨 我猛地睜開(kāi)眼博敬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼友浸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起偏窝,我...
      開(kāi)封第一講書(shū)人閱讀 40,023評(píng)論 0 277
    • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤收恢,失蹤者是張志新(化名)和其女友劉穎武学,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體伦意,經(jīng)...
      沈念sama閱讀 46,555評(píng)論 1 319
    • 正文 獨(dú)居荒郊野嶺守林人離奇死亡火窒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
      茶點(diǎn)故事閱讀 38,626評(píng)論 3 342
    • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驮肉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熏矿。...
      茶點(diǎn)故事閱讀 40,769評(píng)論 1 353
    • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖离钝,靈堂內(nèi)的尸體忽然破棺而出票编,到底是詐尸還是另有隱情,我是刑警寧澤卵渴,帶...
      沈念sama閱讀 36,439評(píng)論 5 351
    • 正文 年R本政府宣布慧域,位于F島的核電站,受9級(jí)特大地震影響浪读,放射性物質(zhì)發(fā)生泄漏昔榴。R本人自食惡果不足惜,卻給世界環(huán)境...
      茶點(diǎn)故事閱讀 42,115評(píng)論 3 335
    • 文/蒙蒙 一瑟啃、第九天 我趴在偏房一處隱蔽的房頂上張望论泛。 院中可真熱鬧,春花似錦蛹屿、人聲如沸屁奏。這莊子的主人今日做“春日...
      開(kāi)封第一講書(shū)人閱讀 32,601評(píng)論 0 25
    • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坟瓢。三九已至,卻和暖如春犹撒,著一層夾襖步出監(jiān)牢的瞬間折联,已是汗流浹背。 一陣腳步聲響...
      開(kāi)封第一講書(shū)人閱讀 33,702評(píng)論 1 274
    • 我被黑心中介騙來(lái)泰國(guó)打工识颊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诚镰,地道東北人。 一個(gè)月前我還...
      沈念sama閱讀 49,191評(píng)論 3 378
    • 正文 我出身青樓祥款,卻偏偏與公主長(zhǎng)得像清笨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刃跛,可洞房花燭夜當(dāng)晚...
      茶點(diǎn)故事閱讀 45,781評(píng)論 2 361

    推薦閱讀更多精彩內(nèi)容

    • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理抠艾,服務(wù)發(fā)現(xiàn),斷路器桨昙,智...
      卡卡羅2017閱讀 134,714評(píng)論 18 139
    • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法检号,類(lèi)相關(guān)的語(yǔ)法腌歉,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法齐苛,異常的語(yǔ)法翘盖,線程的語(yǔ)...
      子非魚(yú)_t_閱讀 31,665評(píng)論 18 399
    • 上篇文章我們介紹struts2標(biāo)簽庫(kù)中的控制標(biāo)簽的基本使用和部分原理,本篇文章接著了解下標(biāo)簽庫(kù)中有關(guān)數(shù)據(jù)標(biāo)簽的使用...
      Single_YAM閱讀 1,812評(píng)論 0 4
    • 前面幾篇文章我們介紹了有關(guān)struts2的基本內(nèi)容脸狸,簡(jiǎn)單理解了整個(gè)框架的運(yùn)作流程最仑。從本篇開(kāi)始我們逐漸了解和使用st...
      Single_YAM閱讀 841評(píng)論 0 5
    • 回顧 我們回顧一下前面兩節(jié)的內(nèi)容: init進(jìn)程創(chuàng)建了SurfaceFlinger服務(wù)進(jìn)程,然后將SurfaceF...
      我叫王菜鳥(niǎo)閱讀 312評(píng)論 0 0