隨筆-199  評論-203  文章-11  trackbacks-0
          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>


          當第一次訪問該JSP的時候,由于users沒有定義,并且也不在page,request,session,application任何一個作用域中,因此輸出的結果為notpresent,empty。

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

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

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

          對于沒有在page,request,session,application中定義或者是沒有分配內存空間(null值)的變量,這兩個標記處理的方法是一致的,都會認為此變量不存在(notpresent)或者為空(empty)。而對于空字符串""值,他們的處理就不一樣了,logic:present 標記認為空字符串仍然是存在的,也就是說,只要是引用了一塊內存空間的變量,logic:present 就會返回present ;而logic:empty則認為空字符串仍然為空,由此得出,在logic:empty看來,變量不僅僅要引用一塊內存空間,而且該地址空間的值不能為空字符串,否則都認為該變量為空,都會返回empty
          posted on 2009-11-10 12:45 Werther 閱讀(1894) 評論(0)  編輯  收藏 所屬分類: 10.Java
          主站蜘蛛池模板: 宣威市| 麻城市| 凤阳县| 宁陕县| 个旧市| 河东区| 华坪县| 双牌县| 洛隆县| 大洼县| 弥渡县| 德江县| 文化| 靖江市| 安仁县| 平舆县| 兴仁县| 天等县| 房山区| 平定县| 鄂托克前旗| 聂拉木县| 锡林郭勒盟| 高州市| 徐闻县| 珲春市| 内乡县| 通辽市| 巍山| 汉中市| 平顶山市| 昔阳县| 湘潭市| 枣强县| 新龙县| 镇坪县| 苏尼特左旗| 探索| 宁安市| 潜江市| 巧家县|