logic:present 和 logic:empty的用法

來源:互聯網
上載者:User
logic:empty和logic:notEmpty
logic:empty標籤判斷指令碼變數是否為null,是否是一個空的字串(長度為0),是否是一個空的collection或map(調用isEmpty()方法來判斷)。logic:notEmpty標籤類似。
<logic:empty name="myBean">
    The bean is missing
</logic:empty>
<logic:notEmpty name="myBean">
    The bean is not missing
</logic:notEmpty>
上段代碼錶示當一個名為myBean的bean在所有的scope中都不存在時,輸出The bean is missing;存在的話輸出The bean is not missing。
此標籤有三個屬性:name、property和scope。 ---------------------------------------------------------------

logic:present 和 logic:empty他們的用法大致相同,唯一的不同點是:兩者在對Null 字元串的處理上存在著不同。


下面為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的值為一個Null 字元串,轉寄過後,輸出的值為: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)。而對於Null 字元串""值,他們的處理就不一樣了,logic:present 標記認為空白字串仍然是存在的,也就是說,只要是引用了一塊記憶體空間的變數,logic:present 就會返回present ;而logic:empty則認為空白字串仍然為空白,由此得出,在logic:empty看來,變數不僅僅要引用一塊記憶體空間,而且該地址空間的值不可為空字串,否則都認為該變數為空白,都會返回empty

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.