posts - 70,comments - 408,trackbacks - 0

          Struts的Logic標(biāo)簽可以根據(jù)特定的邏輯條件來(lái)判斷網(wǎng)頁(yè)的內(nèi)容,或者循環(huán)遍歷集合元素,它和HTML,Bean標(biāo)簽是Struts應(yīng)用種最常用的三個(gè)標(biāo)簽.它的功能主要是比較運(yùn)算,進(jìn)行字符串的匹配,判斷指定的內(nèi)容是否存在,循環(huán)遍歷集合,進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)和重定向,下面具體的說(shuō)明標(biāo)簽的用途:

          <logic:equal>變量等于指定的常量

          <logic:notEqual>變量不等于指定的常量

          <logic:lessThan>變量小于指定的常量

          <logic:lessEqual>變量小于或者等于指定的常量

          <logic:geraterThan>變量大于指定的常量

          <logic:geraterEqual>變量大于或等于指定的常量

          以上這些標(biāo)簽都很類似,有共同的屬性,cookie屬性指定cookie屬性的值,然后用value設(shè)置的常量進(jìn)行比較.header屬性設(shè)置header請(qǐng)求頭的值,也是通過(guò)value屬性設(shè)置的值進(jìn)行比較.parameter屬性設(shè)置一個(gè)請(qǐng)求參數(shù),然后也是通過(guò)value屬性設(shè)置的值進(jìn)行比較.name屬性設(shè)置一個(gè)變量,然后用value比較.如果同時(shí)設(shè)置了name和property屬性,此時(shí)name屬性指定已經(jīng)存在的JavaBean,property屬性指定Bean的屬性.這個(gè)標(biāo)簽感覺(jué)十分簡(jiǎn)單,用法也十分單一,下面研究一下進(jìn)行字符串匹配的標(biāo)簽和判斷特定內(nèi)容的標(biāo)簽.

          <logic:match>標(biāo)簽是判斷變量種是否包含常量字符串的,<logic:netMatch>也判斷是否不包含字符串的,用name屬性定義一個(gè)字符串變量,然后用value屬性的值去判斷變量是否包含這個(gè)字符串或者是不包含這個(gè)字符串,判斷成功返回true.

          <logic:empty>和<logic:netEmpty>標(biāo)簽可以判斷指定的變量是否為空的字符串,可以通過(guò)name屬性來(lái)判斷一個(gè)字符串是否為null.例如是請(qǐng)求參數(shù)的字符串.

          <logic:present>和<logic:notPresent>標(biāo)簽可以判斷指定的對(duì)象是否為空,這個(gè)標(biāo)簽的屬性很多.cookie屬性判斷Cookie是否存在.Header屬性判斷HTPP請(qǐng)求頭是否存在.role屬性是判斷當(dāng)前的權(quán)限的用戶是否是指定的安全角色.user屬性是判斷當(dāng)前通過(guò)權(quán)限驗(yàn)證的用戶是否擁有指定的用戶名.parameter屬性是判斷請(qǐng)求的參數(shù)是否存在.name屬性是用來(lái)判斷指定的Bean是否存在.同時(shí)設(shè)置name和property屬性就是判斷Bean種的具體屬性是否存在了.

          <logic:messagesPresent>和<logic:messagesNotPresent>標(biāo)簽是用來(lái)判斷是否在request范圍內(nèi)的特定的ActionMessages或者是子類ActionErrors對(duì)象.name屬性是用來(lái)檢索ActionMessages對(duì)象的key,property指定從ActionMessages集合對(duì)象中檢索某條消息key也就是具體的ActionMessage對(duì)象.

          進(jìn)行循環(huán)遍歷Logic標(biāo)簽是Logic標(biāo)簽庫(kù)中最復(fù)雜的標(biāo)簽,也是用途最廣泛的標(biāo)簽,它能夠在一個(gè)循環(huán)中遍歷數(shù)組,Collection,Enumeration,Irerator或者M(jìn)ap中的所有元素

          1)              遍歷集合的標(biāo)簽<logic:iterate>的name屬性指定需要進(jìn)行遍歷的集合對(duì)象,它每次從集合中檢索出一個(gè)元素,然后存放在page范圍內(nèi),并以id屬性指定這個(gè)字符串來(lái)命名這個(gè)元素,最好是在里面嵌套一個(gè)<bean:write>標(biāo)簽,把剛剛遍歷的第一個(gè)id指定的字符串輸出,然后在循環(huán)在輸出.length屬性需要遍歷的元素的數(shù)目,如果沒(méi)有設(shè)置length屬性,就遍歷集合中的所有元素.offset屬性指定開(kāi)始遍歷的其實(shí)位置,默認(rèn)值是0.indexId屬性定義一個(gè)代表當(dāng)前被遍歷元素的系列號(hào),這個(gè)變量存放在page范圍內(nèi),可以被<bean:write>標(biāo)簽訪問(wèn)輸出輸出的是int的數(shù)字.例如1.2.3.4等.可以用戶輸出輸出的元素的系列號(hào).

          2)              遍歷Map是通過(guò)<logic:iterate>標(biāo)簽,name屬性指定一個(gè)HashMap,存放在request范圍,然后賦給id指定的變量,indexId可以指定索引編號(hào),然后通過(guò)<bean:write>標(biāo)簽輸出出來(lái).在HashMap的每一個(gè)元素都是一個(gè)集合對(duì)象,所以可以嵌套使用.就是說(shuō)<logic:inerate>這個(gè)標(biāo)簽既可以把Collection的元素弄出來(lái)負(fù)給一個(gè)變量也可以弄Map的.所以說(shuō)它的功能強(qiáng)大.還有一個(gè)collection屬性可以設(shè)置一個(gè)表達(dá)式,這個(gè)表達(dá)式返回的結(jié)果可以作為,<logic:inerate>標(biāo)簽輸出的集合或者M(jìn)ap.這個(gè)屬性類似name屬性.

          最后研究一下進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)和重定向的Logic標(biāo)簽,<logic:forward>標(biāo)簽用于請(qǐng)求轉(zhuǎn)發(fā),它的name屬性指定轉(zhuǎn)發(fā)的目標(biāo),與Struts配置文件中的<global-forwards>元素和的子元素<forward>元素匹配.簡(jiǎn)單的說(shuō)就是<logic:forward>標(biāo)簽的name屬性定義的值,要去找到<golbal-forwards>子元素<forward>元素的匹配的name屬性,然后通過(guò)path指定的路徑進(jìn)行轉(zhuǎn)發(fā).重定向用<logic:redierct>標(biāo)簽它的forward,href和page屬性指定重定向的目標(biāo),這幾個(gè)屬性和<html:link>標(biāo)簽的屬性用法十分相似.

          關(guān)于標(biāo)簽的部分我就說(shuō)到這里,因?yàn)槲覀€(gè)人覺(jué)得在Struts中最常用的無(wú)非也就是這三個(gè)標(biāo)簽庫(kù)了.我以前還寫(xiě)過(guò)一個(gè)Struts的分頁(yè)應(yīng)用,過(guò)些天繼續(xù)發(fā)布到我的Blog上. (網(wǎng)友們的支持,是我繼續(xù)寫(xiě)技術(shù)文章的動(dòng)力!)

          posted on 2005-11-01 21:31 我心依舊 閱讀(31050) 評(píng)論(26)  編輯  收藏

          FeedBack:
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-01-13 21:50 | tanxiaoming
          您的文章寫(xiě)道真不錯(cuò)哦  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-02-06 16:34 | li
          沒(méi)有具體的實(shí)例,不容易理解!  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-02-24 09:48 | 路過(guò)
          <logic:geraterThan>變量大于指定的常量

          <logic:geraterEqual>變量大于或等于指定的常量

          應(yīng)該是greaterThan,greaterEqual吧  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-03-01 21:37 | tomcat
          <logic:iterate id="list" name="actionForm" property="infoList" indexId="index">
          <logic:equal name="index" vlaue="0">
          <INPUT type="checkbox" name="check" value="chk" checked>
          </logic:equal>
          <logic:notEqual name="index" vlaue="0">
          <INPUT type="checkbox" name="check" value="chk">
          </logic:notEqual >
          <bean:write name="list" property="name" />
          <bean:write name="list" property="address" >
          </logic:iterate>  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-03-01 21:39 | tomcat
          <bean:write name="list" property="address" />
          呵呵
            回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-03-07 17:41 | 7737
          看了你的文章,提個(gè)問(wèn)題,在進(jìn)行<logic:equal>進(jìn)行判斷時(shí),如何能解決下面的問(wèn)題?
          int a=0;
          int b=0;
          if(a==b)
          <logic:equal name="aa" property="aaa" value="1">
          只能對(duì)常量進(jìn)行比較,那么在使用struts標(biāo)簽時(shí),怎樣解決變量與變量之間的比較?  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-03-27 11:16 | 我的生活,我做主
          看了你的文章,覺(jué)的寫(xiě)的不錯(cuò)。想提個(gè)問(wèn)題。
          我想判斷或的關(guān)系,改怎么用struts的標(biāo)簽寫(xiě)。
            回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-04-05 21:04 | gaujg
          請(qǐng)問(wèn)怎么能實(shí)現(xiàn)不同的行顯示不同的顏色或者引用不同的css?  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-04-13 09:42 | zhyiwww
          總結(jié)的不錯(cuò),好好學(xué)習(xí)一下  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-05-10 19:43 | ttt
          怎樣用struts標(biāo)簽實(shí)現(xiàn):把從后臺(tái)傳來(lái)的一個(gè)數(shù)據(jù)list在頁(yè)面上遍力輸出啊  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-08-23 11:09 | gg
          @ttt
          <logic:iterate id="element" name="userList">
          <tr>
          <td align="center"><bean:write name="element"/> </td>
          </tr>
          </logic:iterate>  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-10-24 17:57 | ray[匿名]
          沒(méi)有實(shí)例比較難理解!  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-10-26 23:34 | alex[匿名]
          我對(duì)logic的這些標(biāo)簽的理解就是 它們是一個(gè)容器 你可以入東西到里面去 然后他們自動(dòng)來(lái)判斷或者遍歷 你根據(jù)會(huì)產(chǎn)生結(jié)果 來(lái)顯示自己所要的東西~~   回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2006-12-15 16:29 | dsfdsf
          能不能舉個(gè)例子不抄書(shū)呢  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2007-04-23 17:08 | loy
          看過(guò)了,寫(xiě)的還可以  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2007-08-26 12:31 | Zealot
          @7737
          用el表達(dá)式  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2007-09-17 15:50 | 同聲傳譯
          同傳租賃 同聲傳譯翻譯公司 同聲傳譯設(shè)備租賃 同聲傳譯 同傳租賃 同聲傳譯 同聲傳譯設(shè)備租賃 同傳租賃
            回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2007-10-19 23:30 | nn
          有些標(biāo)簽都不知道怎么用。  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2008-01-07 13:43 | java綜合網(wǎng)
          java綜合網(wǎng)
          不錯(cuò),不錯(cuò)~~~  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2008-01-16 12:06 | rookie
          寫(xiě)得不錯(cuò),學(xué)習(xí)學(xué)習(xí),辛苦了  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2008-01-21 14:38 | chenle
          有個(gè)list,我想讓list里的值在頁(yè)面上每五個(gè)換行顯示,怎么寫(xiě)邏輯條件?  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2008-03-02 16:48 | shan
          <logic:iterate>標(biāo)簽有個(gè)indexId屬性,我們可以通過(guò)indexId的值來(lái)判斷,如果”(indexId+1)%5==0“,則輸出<br>直接換行即可
          例:
          <logic:iterate id="element" property="userList" name="userForm" indexId="index">
          <c:if test="${(index+1)%5 == 0}">
          <br>
          </c:if>
          </logic:iterate>

            回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2008-03-21 19:56 | 一笑而過(guò)
          看了你幾篇文章,錯(cuò)別字太多了,雖然你是用拼音輸入,勉強(qiáng)猜得到中文漢字,但是這只也說(shuō)明你專業(yè)風(fēng)格上不嚴(yán)謹(jǐn),希望你還是改正這個(gè)不好的習(xí)慣吧,你的文章還是可以的。
          建議你使用搜狗拼音輸入法吧,連起來(lái)可能錯(cuò)別字會(huì)少一些的。  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))[未登錄](méi)
          2008-06-06 15:15 | a
          請(qǐng)問(wèn):# re: Struts標(biāo)簽-Logic(原創(chuàng))2008-03-02 16:48 | shan

          <logic:iterate>標(biāo)簽有個(gè)indexId屬性,我們可以通過(guò)indexId的值來(lái)判斷,如果”(indexId+1)%5==0“,則輸出<br>直接換行即可
          例:
          <logic:iterate id="element" property="userList" name="userForm" indexId="index">
          <c:if test="${(index+1)%5 == 0}">
          <br>
          </c:if>
          </logic:iterate>
          種的<c:if>是怎么得來(lái)的?  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))
          2008-10-14 13:52 | laji
          真佩服博主的 文筆,咋讀都不通順哈  回復(fù)  更多評(píng)論
            
          # re: Struts標(biāo)簽-Logic(原創(chuàng))[未登錄](méi)
          2008-11-10 19:58 | 王鵬
          需要SSH的分頁(yè)自定義標(biāo)簽 是否有難度。。  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 扎兰屯市| 安塞县| 湖州市| 修文县| 绿春县| 中方县| 繁峙县| 滨州市| 通道| 巴林右旗| 横山县| 会泽县| 七台河市| 齐河县| 洪雅县| 澄城县| 崇文区| 乌拉特前旗| 安化县| 阳西县| 湘阴县| 梧州市| 临沭县| 沽源县| 玉龙| 酒泉市| 固始县| 洪泽县| 贺兰县| 白玉县| 富锦市| 蒙自县| 仪征市| 隆林| 大悟县| 鹤庆县| 寿光市| 拉孜县| 克什克腾旗| 雷波县| 伊宁县|