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