<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    相信自己!

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      26 隨筆 :: 3 文章 :: 13 評(píng)論 :: 0 Trackbacks
     

    logic:iterate

    logic:iterate標(biāo)簽用來迭代集合,您可以使用如下方式來為這個(gè)標(biāo)簽指定其要疊代的集合:

    • 使用一個(gè)運(yùn)行時(shí)表達(dá)式,這個(gè)表達(dá)式的值是一個(gè)集合。
    • 用name屬性引用一個(gè)JSP Bean,這個(gè)JSP Bean本身就是一個(gè)集合。
    • 用name屬性引用一個(gè)JSP Bean,這個(gè)JSP Bean的一個(gè)屬性是一個(gè)集合,這時(shí)可以聯(lián)合使用property來指定這個(gè)集合。

    上面所提到的集合可以是:

    • 對(duì)象類型或原子類型的數(shù)組(Array)。
    • java.util.Collection的實(shí)現(xiàn),包括ArrayList,Vector。
    • java.util.Enumeration的實(shí)現(xiàn)。
    • java.util.Iterator的實(shí)現(xiàn)。
    • java.util.Map的實(shí)現(xiàn),包括HashMap,Hashtable和TreeMap。

    如果您疊代的集合中含有null的值,這時(shí)需要采取一定的措施,因?yàn)檫@時(shí)logic:iterate不會(huì)在page作用域中創(chuàng)建對(duì)象。一般是使用<logic:present>標(biāo)簽或<logic:notPresent>標(biāo)簽來判斷一下。

    下面是logic:iterate疊代ArrayList的示例的對(duì)象引用關(guān)系和部分代碼:

     

    logic:iterate中對(duì)象的引用關(guān)系

     

    圖中的persons列表是在ListAction中填充的,在這里只是簡單的加入了三個(gè)Person對(duì)象,在實(shí)際的應(yīng)用中這些數(shù)據(jù)應(yīng)該取自數(shù)據(jù)庫。具體的代碼如下:

    public ActionForward execute(ActionMapping mapping,ActionForm form,
                     HttpServletRequest request, HttpServletResponse response) {
                   ListForm listForm = (ListForm) form;
                   List<Person> persons = new ArrayList<Person>();
                   Person person1 = new Person();
                   person1.setId("00001");
                   person1.setName("趙辰");
                   Person person2 = new Person();
                   person2.setId("00002");
                   person2.setName("李為芳");
                   Person person3 = new Person();
                   person3.setId("00003");
                   person3.setName("王微");
                   persons.add(person1);
                   persons.add(person2);
                   persons.add(person3);
                   listForm.setPersons(persons);
                   return mapping.findForward("success");
                }
                

    標(biāo)簽輸出的結(jié)果為:

    00001-->趙辰
                00002-->李為芳
                00003-->王微
                

    logic:present

    如果指定的值出現(xiàn)該標(biāo)簽就會(huì)創(chuàng)建其標(biāo)簽體內(nèi)的內(nèi)容。該標(biāo)簽用于以下情況:

    • 檢查具有指定名稱的cookie是否出現(xiàn)。
    • 檢查具有指定名稱的header是否出現(xiàn)。
    • 檢查具有指定名稱的JSP Bean是否出現(xiàn) 或 檢查具有指定名稱的JSP Bean中的property屬性是否出現(xiàn)。
    • 檢查request中指定名稱的參數(shù)是否出現(xiàn)。
    • 檢查當(dāng)前的認(rèn)證用戶是否與指定的安全角色相關(guān)聯(lián)。
    • 檢查當(dāng)前認(rèn)證的主體是否具有指定的名字。

    下面的代碼示例了logic:present標(biāo)簽檢查具有指定名稱User-Agent的header是否出現(xiàn):

    <logic:present header="User-Agent">
                   您的瀏覽器是<bean:header id="userAgent" name="User-Agent"/>
                     <bean:write name="userAgent"/>。<br/>
                </logic:present>
                

    logic:notPresent標(biāo)簽的應(yīng)用正好和logic:present標(biāo)簽相反。

    logic:messagesPresent

    logic:messagesPresent標(biāo)簽用于以下情況:

    • 在request作用域中存在一個(gè)ActionMessages對(duì)象,標(biāo)簽的property屬性和ActionMessages中的property對(duì)應(yīng)。
    • 在request作用域中存在一個(gè)ActionErrors對(duì)象,標(biāo)簽的property屬性和ActionErrors中的property對(duì)應(yīng)。
    • 存在一個(gè)String對(duì)象,將其轉(zhuǎn)換(構(gòu)造)成ActionMessage然后在添加到ActionMessages中。
    • 存在一個(gè)String Array對(duì)象,將數(shù)組中的每一個(gè)String轉(zhuǎn)換成一個(gè)ActionMessage,在將其添加到ActionMessages中。

    標(biāo)簽的message屬性值為true時(shí)將以Globals.MESSAGE_KEY為key在request作用域中查找Message,其它情況下,將name的值作為key查找,如果name 沒有出現(xiàn),默認(rèn)值為Globals.ERROR_KEY。

    下面的代碼示例了logic:messagesPresent標(biāo)簽的典型用法:

    <logic:messagesPresent>
                   <ul>
                   <html:messages id="message">
                     <li><bean:write name="message"/></li>
                   </html:messages>
                   </ul>
                </logic:messagesPresent>
                

    標(biāo)簽logic:messagesNotPresent的應(yīng)用正好和logic:messagesPresent的應(yīng)用相反。

    logic:empty

    logic:empty標(biāo)簽是用來判斷是否為空的。如果為空,該標(biāo)簽體中嵌入的內(nèi)容就會(huì)被處理。該標(biāo)簽用于以下情況:

    • 當(dāng)Java對(duì)象為null時(shí)
    • 當(dāng)String對(duì)象為""時(shí)
    • 當(dāng)java.util.Collection對(duì)象中的isEmpty()返回true時(shí)
    • 當(dāng)java.util.Map對(duì)象中的isEmpty()返回true時(shí)

    下面的代碼示例了logic:empty標(biāo)簽判斷集合persons是否為空:

    <logic:empty name="listForm" property = "persons">
                   <div>集合persons為空!</div>
                </logic:empty>
                

    logic:notEmpty標(biāo)簽的應(yīng)用正好和logic:empty標(biāo)簽相反。

    logic:match

    logic:match標(biāo)簽用來處理子串匹配問題。

    如果指定的值匹配該標(biāo)簽就會(huì)創(chuàng)建其標(biāo)簽體內(nèi)的內(nèi)容。該標(biāo)簽用于以下情況:

    • 檢查具有指定名稱的cookie是否與該標(biāo)簽的value匹配。
    • 檢查具有指定名稱的header是否與該標(biāo)簽的value匹配。
    • 檢查具有指定名稱的JSP Bean是否與該標(biāo)簽的value匹配 或 檢查具有指定名稱的JSP Bean中的property屬性值是否與該標(biāo)簽的value匹配。
    • 檢查request中指定名稱的參數(shù)值是否與該標(biāo)簽的value匹配。

     

    下面的代碼示例了logic:match標(biāo)簽的典型用法:

    <logic:present header="User-Agent">
                   <logic:match header="User-Agent" value="MSIE 6.0">
                     MS IE 6.0
                   </logic:match>
                </logic:present>
                

    logic:notMatch標(biāo)簽的應(yīng)用正好和logic:match標(biāo)簽相反。

    logic:equal

    這里要介紹的不只是logic:equal(=)標(biāo)簽,而是要介紹一類標(biāo)簽,這類標(biāo)簽完成比較運(yùn)算,包括:

    • logic:equal(=)
    • logic:notEqual(!=)
    • logic:greaterEqual(>=)
    • logic:lessEqual(<=)
    • logic:graterThan(>)
    • logic:lessThan(<)

    該類標(biāo)簽的用法類似,我們只介紹logic:equal標(biāo)簽,其它的留給您自己去完成。

    logic:equal是用來判斷是否相等的。如果相等,該標(biāo)簽體中嵌入的內(nèi)容就會(huì)被處理。該標(biāo)簽用于以下情況:

    • 比較由該標(biāo)簽的cookie屬性指定的cookie的值是否與該標(biāo)簽的value屬性值相等。
    • 比較由該標(biāo)簽的header屬性指定的header的值是否與該標(biāo)簽的value屬性值相等。
    • 比較由該標(biāo)簽的name屬性指定的JSP Bean是否與該標(biāo)簽的value屬性值相等(property屬性不出現(xiàn))或比較由該標(biāo)簽的name屬性指定的JSP Bean中的property屬性值是否與該標(biāo)簽的value屬性值相等。
    • 比較由該標(biāo)簽的parameter屬性指定的參數(shù)值(request中)是否與該標(biāo)簽的value屬性值相等。

    logic:forward

    我覺得將forward和redirect這兩個(gè)動(dòng)作放到一起對(duì)比著介紹更加有利于理解,基于此原因也就將logic:forward和logic:redirect這兩個(gè)標(biāo)簽也拿到這里一起介紹了。

    讓我們看看這兩個(gè)動(dòng)作的區(qū)別:

    • forward是在servlet內(nèi)部執(zhí)行,瀏覽器完全不會(huì)感知到這個(gè)動(dòng)作,原始的url也不會(huì)改變,瀏覽器重新裝載的話也只是對(duì)原始的請(qǐng)求進(jìn)行簡單的重復(fù)。
    • redirect則分成兩個(gè)步驟:第一步是web應(yīng)用程序告訴瀏覽器第二個(gè)url,然后瀏覽器向第二個(gè)url發(fā)送請(qǐng)求。

     

    redirect比forward慢,因?yàn)闉g覽器要做二次請(qǐng)求。還有就是要注意,在第一次的請(qǐng)求作用域(request作用域)內(nèi)的bean對(duì)于第二次請(qǐng)求是不可見的。

    理解了上面描述的區(qū)別也就知道了什么時(shí)候該選用logic:forward標(biāo)簽什么時(shí)候該選用logic:redirect標(biāo)簽了。logic:forward標(biāo)簽完成PageContext.forward()或HttpServletResponse.sendRedirect(),如何選擇由控制器決定。logic:redirect標(biāo)簽完成HttpServletResponse.sendRedirect()。

    在使用logic:redirect標(biāo)簽時(shí)我們可以向使用html:link一樣構(gòu)造baseurl和query參數(shù)。如果您感興趣可以參考html:link標(biāo)簽。

    posted on 2007-10-29 12:21 北極雪 閱讀(942) 評(píng)論(3)  編輯  收藏 所屬分類: Struts

    評(píng)論

    # re: struts-logic標(biāo)簽 2007-11-13 10:02 朱小天
    如何實(shí)現(xiàn)logic-interate的換行問題并且每行要輸出兩條信息
      回復(fù)  更多評(píng)論
      

    # re: struts-logic標(biāo)簽 2008-04-17 15:27 雨點(diǎn)
    實(shí)在太詳細(xì)了,正好在學(xué)struts,這個(gè)很實(shí)用  回復(fù)  更多評(píng)論
      

    # re: struts-logic標(biāo)簽 2008-04-17 15:44 雨點(diǎn)
    不過我怎么感覺和我學(xué)的不一樣  回復(fù)  更多評(píng)論
      


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产亚洲色视频在线| 国产又黄又爽又猛的免费视频播放 | 2022年亚洲午夜一区二区福利 | 亚洲无码精品浪潮| 免费一级毛片在线播放视频免费观看永久| 成年大片免费视频| 中文字幕 亚洲 有码 在线| 在线观看免费人成视频色9 | 深夜A级毛片视频免费| 四虎影视永久免费观看网址| 欧美日韩亚洲精品| 又粗又大又硬又爽的免费视频| 九九免费精品视频在这里| 久久亚洲色一区二区三区| 成人国产精品免费视频| 久久久亚洲精品国产| 久久精品一本到99热免费| 亚洲精品在线视频观看| 成人免费a级毛片| 亚洲精品色在线网站| 亚洲人成国产精品无码| 久久免费精彩视频| 亚洲一级高清在线中文字幕| 日韩特黄特色大片免费视频| 立即播放免费毛片一级| 亚洲中文字幕无码久久精品1 | 欧美男同gv免费网站观看| 亚洲妇女无套内射精| 久久亚洲色一区二区三区| 亚洲香蕉免费有线视频| 国产亚洲福利精品一区二区| 亚洲午夜福利在线观看| 91频在线观看免费大全| 香蕉97碰碰视频免费| 亚洲福利在线观看| 成人免费看吃奶视频网站| 黄色视屏在线免费播放| 91精品国产亚洲爽啪在线观看| 破了亲妺妺的处免费视频国产 | 100000免费啪啪18免进| 国产av无码专区亚洲av毛片搜|