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

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

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

    相信自己!

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      26 隨筆 :: 3 文章 :: 13 評論 :: 0 Trackbacks
     

    logic:iterate

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

    • 使用一個運行時表達式,這個表達式的值是一個集合。
    • 用name屬性引用一個JSP Bean,這個JSP Bean本身就是一個集合。
    • 用name屬性引用一個JSP Bean,這個JSP Bean的一個屬性是一個集合,這時可以聯合使用property來指定這個集合。

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

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

    如果您疊代的集合中含有null的值,這時需要采取一定的措施,因為這時logic:iterate不會在page作用域中創建對象。一般是使用<logic:present>標簽或<logic:notPresent>標簽來判斷一下。

    下面是logic:iterate疊代ArrayList的示例的對象引用關系和部分代碼:

     

    logic:iterate中對象的引用關系

     

    圖中的persons列表是在ListAction中填充的,在這里只是簡單的加入了三個Person對象,在實際的應用中這些數據應該取自數據庫。具體的代碼如下:

    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");
                }
                

    標簽輸出的結果為:

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

    logic:present

    如果指定的值出現該標簽就會創建其標簽體內的內容。該標簽用于以下情況:

    • 檢查具有指定名稱的cookie是否出現。
    • 檢查具有指定名稱的header是否出現。
    • 檢查具有指定名稱的JSP Bean是否出現 或 檢查具有指定名稱的JSP Bean中的property屬性是否出現。
    • 檢查request中指定名稱的參數是否出現。
    • 檢查當前的認證用戶是否與指定的安全角色相關聯。
    • 檢查當前認證的主體是否具有指定的名字。

    下面的代碼示例了logic:present標簽檢查具有指定名稱User-Agent的header是否出現:

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

    logic:notPresent標簽的應用正好和logic:present標簽相反。

    logic:messagesPresent

    logic:messagesPresent標簽用于以下情況:

    • 在request作用域中存在一個ActionMessages對象,標簽的property屬性和ActionMessages中的property對應。
    • 在request作用域中存在一個ActionErrors對象,標簽的property屬性和ActionErrors中的property對應。
    • 存在一個String對象,將其轉換(構造)成ActionMessage然后在添加到ActionMessages中。
    • 存在一個String Array對象,將數組中的每一個String轉換成一個ActionMessage,在將其添加到ActionMessages中。

    標簽的message屬性值為true時將以Globals.MESSAGE_KEY為key在request作用域中查找Message,其它情況下,將name的值作為key查找,如果name 沒有出現,默認值為Globals.ERROR_KEY。

    下面的代碼示例了logic:messagesPresent標簽的典型用法:

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

    標簽logic:messagesNotPresent的應用正好和logic:messagesPresent的應用相反。

    logic:empty

    logic:empty標簽是用來判斷是否為空的。如果為空,該標簽體中嵌入的內容就會被處理。該標簽用于以下情況:

    • 當Java對象為null時
    • 當String對象為""時
    • 當java.util.Collection對象中的isEmpty()返回true時
    • 當java.util.Map對象中的isEmpty()返回true時

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

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

    logic:notEmpty標簽的應用正好和logic:empty標簽相反。

    logic:match

    logic:match標簽用來處理子串匹配問題。

    如果指定的值匹配該標簽就會創建其標簽體內的內容。該標簽用于以下情況:

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

     

    下面的代碼示例了logic:match標簽的典型用法:

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

    logic:notMatch標簽的應用正好和logic:match標簽相反。

    logic:equal

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

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

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

    logic:equal是用來判斷是否相等的。如果相等,該標簽體中嵌入的內容就會被處理。該標簽用于以下情況:

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

    logic:forward

    我覺得將forward和redirect這兩個動作放到一起對比著介紹更加有利于理解,基于此原因也就將logic:forward和logic:redirect這兩個標簽也拿到這里一起介紹了。

    讓我們看看這兩個動作的區別:

    • forward是在servlet內部執行,瀏覽器完全不會感知到這個動作,原始的url也不會改變,瀏覽器重新裝載的話也只是對原始的請求進行簡單的重復。
    • redirect則分成兩個步驟:第一步是web應用程序告訴瀏覽器第二個url,然后瀏覽器向第二個url發送請求。

     

    redirect比forward慢,因為瀏覽器要做二次請求。還有就是要注意,在第一次的請求作用域(request作用域)內的bean對于第二次請求是不可見的。

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

    在使用logic:redirect標簽時我們可以向使用html:link一樣構造baseurl和query參數。如果您感興趣可以參考html:link標簽。

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

    評論

    # re: struts-logic標簽 2007-11-13 10:02 朱小天
    如何實現logic-interate的換行問題并且每行要輸出兩條信息
      回復  更多評論
      

    # re: struts-logic標簽 2008-04-17 15:27 雨點
    實在太詳細了,正好在學struts,這個很實用  回復  更多評論
      

    # re: struts-logic標簽 2008-04-17 15:44 雨點
    不過我怎么感覺和我學的不一樣  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 91黑丝国产线观看免费| 亚洲?V乱码久久精品蜜桃 | 黄色a三级三级三级免费看| 国产精品免费视频一区| 成全动漫视频在线观看免费高清版下载| 永久免费av无码网站韩国毛片 | 亚洲色大成网站WWW久久九九| 亚洲国产日韩视频观看| 亚洲精品无码激情AV| 19禁啪啪无遮挡免费网站| 免费精品国自产拍在线播放| 久久精品国产亚洲AV麻豆网站 | 国产大片91精品免费观看男同| 亚洲欧洲日韩国产| 免费又黄又硬又爽大片| 59pao成国产成视频永久免费| 亚洲av无码片在线播放| 特级淫片国产免费高清视频| 久久免费视频一区| 亚洲一区二区观看播放| 亚洲av无码精品网站| 免费人成在线观看网站视频| 国产精品久久免费| 男女一进一出抽搐免费视频| 亚洲欧好州第一的日产suv| 久久久久亚洲AV成人片| 久久精品国产精品亚洲人人| 特级淫片国产免费高清视频| 3d成人免费动漫在线观看| 好吊色永久免费视频大全 | 亚洲精品在线播放视频| 国产午夜亚洲不卡| 日韩免费无砖专区2020狼| 91高清免费国产自产拍2021| 一区二区三区免费精品视频| 亚洲人成网站18禁止| 亚洲一区二区三区深夜天堂| 无码欧精品亚洲日韩一区| 久久亚洲AV永久无码精品| 国产在线不卡免费播放| 大地资源二在线观看免费高清|