StevenBot-Saltsam

          眼睛能裝下世界,為何卻裝不下眼淚? 一只風(fēng)箏一輩子只為一根線冒險(xiǎn)。 那不是一場(chǎng)游戲,為何總有一根線牽著心懷,隱隱作疼? 那不是一段邂逅,為何飄在橋上的影子,總纏進(jìn)夢(mèng)鄉(xiāng)? 那不是一個(gè)夢(mèng)境,為何你的溫柔私語(yǔ),總是不經(jīng)意的響起?

          導(dǎo)航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          datas link

          OSChinal Sources codes Library

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主題:struts2 Tags 堆棧分析

          1. property: <s:property value="username"/>


           2. property 取值為字符串: <s:property value="'username'"/>


           3.  property 設(shè)定默認(rèn)值: <s:property value="admin" default="管理員"/>


           4. property 設(shè)定HTML: <s:property value="'<hr/>'" escape="true"/> 輸出 <hr/>

           

           5. set 設(shè)定adminName值(默認(rèn)為request 和 ActionContext): <s:set var="adminName"  value="username" />

          set 從request取值: <s:property value="#request.adminName" />
          set 從ActionContext取值: <s:property value="#adminName" />

          set 設(shè)定范圍: <s:set var="adminPassword" value="password" scope="session"/>

          set 從相應(yīng)范圍取值: <s:property value="#session.adminPassword"/>

          說(shuō)明:set 在以前的版本中有name id,但是在2.1版本開始不推薦使用,用var代替.實(shí)際var表示把變量壓入棧actioncontext. 官方這樣說(shuō)明var的:Name used to reference the value pushed into the Value Stack;

          這樣我們可以用#key來(lái)訪問(wèn).

           

          6.  bean標(biāo)簽

           <s:bean name="com.awf.tags.Dog"  var="mydog">
              <s:param name="name" value="'pp'"></s:param>
              <s:property value="name"/>
             </s:bean>

           

          說(shuō)明:注意到pp用單引號(hào),因?yàn)檫@時(shí)要真正用到String,如果沒(méi)有加單引號(hào),struts2會(huì)默認(rèn)用OGNL到ValueStack找值.

          對(duì)于為什么可以<s:property value="name"/>(取到pp)這樣取值,可以做個(gè)小實(shí)驗(yàn)在set標(biāo)簽里加入<s:debug/>,這樣你可能看到整個(gè)棧數(shù) 據(jù)的出入,此時(shí)棧頂當(dāng)然是mydog對(duì)象,這個(gè)標(biāo)簽執(zhí)行完后就可以出棧了,這時(shí)action又保持在棧頂了.

          此時(shí)mydog被存入到actioncontext棧中,所以要取值要用到#號(hào)了.

          取值:<s:property value="#mydog.name/>

           

          7. include標(biāo)簽

           <s:include value="/index.html"></s:include>

          這里value的默認(rèn)處理方式是要內(nèi)容當(dāng)做String,不是OGNL,如果這時(shí)要用OGNL可以用%,這就是%的實(shí)際意義了,其實(shí)上面所講的標(biāo)簽 也可以使用%,OGNL對(duì)于那些默認(rèn)使用OGNL的標(biāo)簽會(huì)忽略%號(hào),真搞不懂為什么全部都統(tǒng)一,這樣我們就不用記這么多了^^,下面是具體使用方法:

          <s:set var="incPage" value="%{'/index.html'}" />
           <s:include value="%{#incPage}"></s:include>

           

          現(xiàn)在回到include標(biāo)簽,這個(gè)標(biāo)簽真的不好用對(duì)中文的支持不好,可能有BUG,所以還是用jsp自帶的動(dòng)態(tài)包含/靜態(tài)包含.

           

          8. if elseif else標(biāo)簽

          定義變量 num= <s:set var="num" value="'100'"/>   set定義的變量存在ActionContext棧中

          <s:if test="#num< 0"> 小于0 </s:if>
           <s:elseif test="#num <50"> 小于50 </s:elseif>
            <s:else>大于50</s:else>

           

          <s:if test="#parameters.aaa == null">null</s:if>

           

          這里說(shuō)到#parameters不得不提一下,我們?cè)诘刂窓谳斎氲淖兞繒?huì)存在ActionContext棧中,如xx/sdfds.jsp?name=1

          這樣我們可能用OGNL這樣取值#parameters.name ,注意這里取出來(lái)的是一個(gè)集合,如果你這樣訪問(wèn)xx/sdfds.jsp?name=1&name=2,你可以發(fā)現(xiàn)可以取出兩個(gè)值.因?yàn)檫@樣所以在寫程序時(shí)我樣最好精確定位像這樣#parameters.name[0],就算你能保證只能一個(gè)值,也要這樣.

           

          9. iterator標(biāo)簽,遍歷集合

          <s:iterator value="{1, 2, 3}" >
             <s:property/> 
          </s:iterator>

           

          自定義變量:

          <s:iterator value="{'aaa', 'bbb', 'ccc'}" var="x">
             <s:property value="#x.toUpperCase()"/> |
            </s:iterator>

           

          <s:iterator value="{'aaa', 'bbb', 'ccc'}" status="status">
             <s:property/> | 
             遍歷過(guò)的元素總數(shù):<s:property value="#status.count"/> |
             遍歷過(guò)的元素索引:<s:property value="#status.index"/> |
             當(dāng)前是偶數(shù)?:<s:property value="#status.even"/> |
             當(dāng)前是奇數(shù)?:<s:property value="#status.odd"/> |
             是第一個(gè)元素嗎?:<s:property value="#status.first"/> |
             是最后一個(gè)元素嗎?:<s:property value="#status.last"/>
             <br />
            </s:iterator>

           

          說(shuō)明:偶數(shù)和其數(shù)不是下標(biāo),下標(biāo)0其實(shí)是第一個(gè)當(dāng)然是奇數(shù)了.

           

          遍歷map:

          <s:iterator value="#{1:'a', 2:'b', 3:'c'}" var="x">
             <s:property value="#x.key"/> | <s:property value="#x.value"/> <br />
            </s:iterator>

           

          posted on 2011-10-08 09:33 Steven_bot 閱讀(489) 評(píng)論(0)  編輯  收藏 所屬分類: 遇到的一些問(wèn)題

          主站蜘蛛池模板: 余姚市| 虎林市| 紫金县| 健康| 镇康县| 望城县| 鄯善县| 长沙市| 岳普湖县| 柘城县| 万山特区| 论坛| 东光县| 彭水| 宕昌县| 德钦县| 通海县| 田东县| 增城市| 丰顺县| 绥芬河市| 巢湖市| 额敏县| 敦煌市| 宽城| 南阳市| 望江县| 莫力| 宜春市| 历史| 平阳县| 新竹市| 浦东新区| 榕江县| 北宁市| 莲花县| 阆中市| 大荔县| 永清县| 崇礼县| 灵寿县|