JSP運算式語言

來源:互聯網
上載者:User

JSP運算式語言(2)

點運算子和索引運算子都可以用來訪問map。比如,下列兩個EL運算式都會返回名為myKey的鍵對應的值:

但是兩者還是有著一小點區別:如果鍵名中包含能混淆EL的字元,你就不能使用點運算子。例如使用${header["user-agent"]}沒有問題,但${header.user-agent}就出錯了,因為第二個運算式中user和agent之間的破折號被解析為減號。除非有一個變數名為agent,而且header.user和agent都為null,依照EL規範文檔,${null - null}結果為零。而第一個運算式有可能返回零。如果map鍵名中含有點號,你可能會遇到不同但更嚴重的問題。例如,你可以正常地使用${param["my.par"]},而${param.my.par}可能會得到null。這將是嚴重的問題,因為null是一個可能出現的有效結果。我們建議你在所有的場合都使用方括弧的形式,並忘掉這些問題。

和JSP類似,EL也包含隱式對象,如表2-7所示。

表2-7 EL的隱式對象

對象

描述

pageContext

JSP頁面上下文。特別是,pageContext.

servletContext得到的引用和JSP中隱

式變數application引用指向同一個對象。

同理,pageContext. session等

價於JSP中的session,pageContext.

request等價於JSP中的request,

pageContext.response等價於

JSP中的response

param

把請求參數名稱映射到它的第一個值上

paramValues

把請求參數名稱映射到包含它的值的數組上

header

把要求標頭名稱映射到它的第一個值上

headerValues

把要求標頭名稱映射到包含它的值的數組上

cookie

把cookie名稱映射到唯一的cookie上

initParam

把上下文初始化參數映射到它的值上

pageScope

把page-scoped變數名稱映射到它們的值上

requestScope

把requset-scoped變數名稱映射到它們的值上

sessionScope

把seesion-scoped變數名稱映射到它們的值上

applicationScope

把application-scoped變數名稱映射到它們的值上

注意JSP指令碼變數在EL運算式中無效。

你可能已經注意到EL並沒有包含任何聲明變數的方法。在EL運算式中,你可以使用JSTL核心動作c:set(我們將在下一節講述)或者範圍屬性(scoped attributes)設定的變數。例如,下面幾種定義都可以讓你使用EL運算式${xyz}。

然而,你必須對範圍多加註意。c:set設定的變數和pageContext中的屬性是同一個變數。也就是說,c:set定義了一個在page上下文中的屬性。sessionContext中的屬性是與其不同的變數,並且你不能用${xyz}的方式訪問它,因為它"隱藏"在page上下文中同名屬性的後面。要訪問session屬性,你必須在屬性名稱之前加上sessionScope首碼,像${sessionScope.xyz}這樣。如果你不指定範圍,EL會首先在page中尋找屬性,接著是request,然後是session,最後在application範圍。

注意EL運算式不能嵌套。像${expr1[${expr2}]}這樣的運算式是非法的。

你可以把幾個EL運算式和附加文本組合成複合運算式,如下例所示:

但是,你不能混用格式${}和#{}。

轉自:http://book.51cto.com/art/200909/150189.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.