EL表達式學習筆記

如果你將一個字符串放進request裏面,如果我們用jsp的知識來在前臺取的數據,如下所示:

<%= request.getAttribute("hello") %>

但如果用EL表達式的話,就可以寫成下面的樣子:

${hello }

說明一下:

el表達式的隱含對象爲pageScope, requestScope, sessionScope, applicationScope

如果未指定scope,它的搜索順序爲:pageScope~applicationScope,當然我們可以顯式的指定EL表達式的scope:

${requestScope.hello }

假設我們把一個user對象扔進request,user對象包含username, age等信息,我們怎麼取出該對象的username和age信息呢:

${user.username }
${user.age }

注意:user對象應該提供getUserName()和getAge()方法,因爲EL表達式其實是調用類似的方法來取得相應的內容。


現在假設後臺是把一個map對象扔進了request裏面,代碼如下:

Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

request.setAttribute("map", map);

那麼如何在前臺取得key1和key2對應的值呢?可以用下面的方法:

${map.key1 }
${map.key2 }

但是如果後臺現在你不知道傳回多少數據,需要遍歷的話,EL表達式是完成不了的,這就需要配合JSTL表達式來完成,後面將會講解


假設現在後臺中是一個字符串數組:

String[] arr = {"a", "b", "c"};

request.setAttribute("arr", arr);

則前臺是這樣來獲得第二個元素:

${arr[1] }

但如果是對象數組,例如是10個user對象的數組,我們現在來取得第二個user對象的姓名:

${arr[1].username }

如果是List容器,取法跟數組一樣:

${arr[1].username }

EL表達式對運算符的支持:

假設要計算1+2 : ${1+2 } 便可

除法 : 10/5 : ${10/5 } 也可以寫成 ${10 div 5 }

取餘 : 10 % 3 : ${10%3 } 或者 ${10 mod 3 }

等於 : ${10==10 } 或者 ${10 eq 10 }

不等於 : ${10 != 10 } 或者 ${10 ne 10 }

小於 : ${8 < 10 } 或者 ${8 lt 10 }

大於 : ${8 > 10 } 或者 ${8 gt 10 }

小於等於 : <= | le

大於等於 : >= | ge

and : && | and

或 : || | or

非 : ! | not


對於取出來的數據是不是爲空,可以用下面的函數:

${empty value }

對於不存在,或者你在request裏面設置的null, 或者數組,字符串,list,map等容器的長度爲0的情況下都會輸出true,其他情況輸出false

發佈了74 篇原創文章 · 獲贊 3 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章