posts - 5, comments - 24, trackbacks - 0, articles - 20
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          logic:present 和 logic:empty標簽

          Posted on 2006-09-24 22:35 kook 閱讀(2594) 評論(2)  編輯  收藏 所屬分類: Struts
          logic:present 和 logic:empty他們的用法大致相同,唯一的不同點是:兩者在對空字符串的處理上存在著不同。


          下面為index.jsp中的代碼:
          ?1?<logic:notPresent?name="users">
          ?2??notpresent
          ?3?</logic:notPresent>
          ?4?<logic:notEmpty?name="users">
          ?5??notempty
          ?6?</logic:notEmpty>
          ?7?<logic:empty?name="users">
          ?8??empty
          ?9?</logic:empty>
          10?<logic:present?name="users">
          11??present
          12?</logic:present>


          當?shù)谝淮卧L問該JSP的時候,由于users沒有定義,并且也不在page,request,session,application任何一個作用域中,因此輸出的結果為notpresent,empty。

          下面我們增加一個action,讓他在index.jsp之前執(zhí)行,然后再跳轉到index.jsp中,同時在該action的execute方法中增加如下代碼:
          ?
          1String?userName?=?"";
          2request.setAttribute("users",?userName);
          3return?new?ActionForward("/index.jsp");
          4
          這里將userName保存在request中,key為users,再將請求轉發(fā)至index.jsp中,但是userName的值為一個空字符串,轉發(fā)過后,輸出的值為:empty,present

          這里我們再做一次改動,將action的execute方法中的代碼改為:
          1String?userName?=?null;
          2request.setAttribute("users",?userName);
          3return?new?ActionForward("/hello.jsp");
          4
          不同的是userName 不再為空字符串了,而是null值,當轉發(fā)至index.jsp后,輸出的值為:notpresent,empty 。

          對比這幾次改動,我們可以得出結論:

          對于沒有在page,request,session,application中定義或者是沒有分配內存空間(null值)的變量,這兩個標記處理的方法是一致的,都會認為此變量不存在(notpresent)或者為空(empty)。而對于空字符串""值,他們的處理就不一樣了,logic:present 標記認為空字符串仍然是存在的,也就是說,只要是引用了一塊內存空間的變量,logic:present 就會返回present ;而logic:empty則認為空字符串仍然為空,由此得出,在logic:empty看來,變量不僅僅要引用一塊內存空間,而且該地址空間的值不能為空字符串,否則都認為該變量為空,都會返回empty

          評論

          # re: logic:present 和 logic:empty標簽  回復  更多評論   

          2008-05-05 11:19 by Anglee
          講的很到位!謝了!

          # re: logic:present 和 logic:empty標簽  回復  更多評論   

          2008-05-21 10:00 by 蟲蟲兒
          你的回答正是我想了解的,3q!
          主站蜘蛛池模板: 砀山县| 沅江市| 鲁甸县| 张家界市| 响水县| 连山| 大荔县| 清徐县| 盖州市| 体育| 东城区| 沙河市| 潮州市| 桑植县| 峨山| 莱阳市| 澳门| 施甸县| 重庆市| 咸丰县| 大同市| 通山县| 剑阁县| 舟曲县| 容城县| 松江区| 驻马店市| 武邑县| 永新县| 云梦县| 钦州市| 舞钢市| 望城县| 芜湖县| 许昌市| 浑源县| 咸阳市| 南平市| 大宁县| 巴东县| 长岭县|