EL表示式中的empty和null

2021-08-04 12:26:20 字數 1173 閱讀 5952

先說一下el表示式中的null和empty區別,然後再說說最近在專案中出現的乙個有趣的問題。

el中的null和empty都可用來判斷值是否為空,但兩者存在略微的區別,

先用網上的乙個小例子來演示下:

test.jsp**:

<%@page pageencoding="utf-8" %>

name值為:

$empty處理結果:$

==null處理結果:$

第一種情況:位址列輸入:

顯示:

name值為:

empty處理結果:true

==null處理結果:true

第二種情況:位址列輸入:?name=

顯示:

name值為:

empty處理結果:true

==null處理結果:false

分析:第一種情況的name=null,第二種情況的name=「」

empty表示式對於name=null和name=」「的識別是一樣的,都返回true;

==null表示式對於name=null判斷為true,而對於name=」「判斷則是false;

如果非要使用==null表示式判斷是否為空,需要將表示式寫成如下:

$
最近在做的專案中需要在頁面上解析從後台傳來的json資料,我把**簡化,其中有一段**是這樣的,

if test="$>i***portde 值:$

**想實現的目的當i***port不為空時,輸出i***port的值,當為空時則什麼都不輸出;

結果卻匪夷所思,頁面上竟然輸出了「i***portde 值:null」。

既然頁面上有資訊輸出,則代表i***port在判斷時被識別為不為空,但是輸出的i***port值怎麼又是null?

那麼假設i***port為空,這時候頁面是不應該輸出任何資訊的。兩種情況都說不通。

後來揣測是json字串出錯了,後台檢視了json後,許久後才看出端倪來,這串json是通過httpclient從其他系統拿過來的資料,中間也不知道經過了什麼,i***port變成了「null」,是「null」而不是null,也就是i***port的值是「null」字串……尷尬,被這個小細節浪費了些許時間。

el表示式中 null 和empty

先看例子 test.jsp page pageencoding utf 8 name empty處理結果 null處理結果 page pageencoding utf 8 name empty處理結果 null處理結果 顯示 name empty處理結果 true null處理結果 true nam...

el表示式中 null 和empty

el中保留字empty與null的區別 先看例子 test.jsp page pageencoding utf 8 name empty處理結果 null處理結果 顯示 name empty處理結果 true null處理結果 true位址列輸入 位址列輸入 顯示 name empty處理結果 tr...

EL表示式中 empty 和 null 區別

在el中empty對 和null的處理都返回true,而 null對 返回false,對null返回true。比如 a null 如果a是等於 字串空。結果就是false.只能判斷null empty a 不管a等於null或者 結果都是true.empty 運算子主要用來判斷值是否為空 null,...