Section7: 式言語(EL)を使用したJSPページの構築

EL式の演算子
演算子エイリアス説明
+加算
-減算
*乗算
/div除算
%mod剰余
==eq等しい
!=ne等しくない
<lt小さい
>gt大きい
<=le以下
>=ge以上
emptynull、空文字、空の配列・コレクションの場合true
&&and論理積
||or論理和
!not否定
a ? b : c 三項演算子
  • 演算子の略語の意味
    • eq: equal
    • ne: not equal
    • lt: less than
    • gt: greater than
    • le: less than or equal to
    • ge: greater than or equal to
EL式の演算
演算結果備考
${"10" + 20}30文字列は数値に変換される。
${"10" + '20'}30文字列同士の演算でも数値に変換して計算される。
${10 * null}0nullは0に変換される。
${10 / 0}Infinity0で除算してもエラーにはならず、Infinityになる。
${10 > null}false比較演算のオペランドにnullがあるとfalseになる。
${"test1" == "test1"}true文字列の内容比較も可能。
${"test1" == "test2"}false文字列の内容比較も可能。
${empty array} (array:空の配列)trueemptyで配列の要素が0かどうかも調べられる。
${empty list} (list:空のArrayList)trueemptyでListの要素が0かどうかも調べられる。
EL式の予約語
EL式の中で使用不可能な識別子
予約語
div
mod
eq
ne
lt
gt
le
ge
empty
and
or
not
true
false
null
instanceof
  • 演算子のエイリアス + empty + booleanの値 + null + instanceof
EL式の暗黙オブジェクト
暗黙オブジェクト説明
pageScopepageスコープのマップ
requestScoperequestスコープのマップ
sessionScopesessionスコープのマップ
applicationScopeapplicationスコープのマップ
paramリクエストパラメーターのキーと値のマップ
paramValuesリクエストパラメータのキーと値の配列のマップ。1つのキーに対して複数の値が存在する場合に使用する。
headerリクエストヘッダのキーと値のマップ。
headerValuesリクエストヘッダのキーと値の配列のマップ。1つのキーに対して複数の値が存在する場合に使用する。
cookieクッキーのマップ。
initParam初期化パラメータのマップ。
pageContextこのページのPageContext。このオブジェクトを通じてJSPの暗黙オブジェクトを使用することができる。
EL式でのプロパティ・配列/リスト・マップへのアクセス
アクセス種別記法備考
オブジェクトのプロパティへのアクセスオブジェクト名.プロパティ名
オブジェクト名["プロパティ名"]
obj.prop
obj["prop"]
実際にはgetterが呼ばれる。(例だとgetProp())
配列/リスト要素へのアクセス配列オブジェクト名[インデックス番号]
配列オブジェクト名["インデックス番号"]
list[1]
list["1"]
インデックス番号は二重引用符で囲っても囲わなくてもよい
マップ要素へのアクセスマップオブジェクト名.キー名
マップオブジェクト名["キー名"]
map.key
map["key"]
キー名はプロパティのようにも書ける
  • マップと配列の複合の場合、map["key"][2] や list[0]["key"] などと書ける
EL式でのスコープの検索順序
EL式に識別子を記述した時に、その識別子に対応するオブジェクトをどういう順番でどこから検索するか。
検索場所
識別子に対応する暗黙オブジェクト
pageScope内の識別子に対応する属性値
requestScope内の識別子に対応する属性値
sessionScope内の識別子に対応する属性値
applicationScope内の識別子に対応する属性値
どこにも見つからなかった場合nullを返す。(何も表示されない)
  • EL式で参照できるオブジェクトは暗黙オブジェクトかスコープに格納されたオブジェクトだけである。
  • 宣言やスクリプトレット内で定義された変数を参照することは出来ない。
Functionsの作成作業
作業
publicかつstaticなメソッドを実装する
tldファイルを記述する
Functionsを使用するためのtldファイルの記述
タグ説明
function
nameFunctionの名前
function-classメソッドが定義されたクラスの完全修飾名。
function-signatureメソッドのシグネチャ。引数や戻り値の型は完全修飾名を使用すること。
例: java.lang.String testFunc(java.lang.String, int)
Functionsの呼び出し方
やること記述例
taglibディレクティブを指定<%@ taglib uri="/WEB-INF/tld/testFunction.tld" prefix="test" %>
EL式からFunctionsを呼び出す${test:testFunc("param1", 2)}
inserted by FC2 system