EL式の基本構文まとめ!${}で使う書き方のルールを解説
生徒
「先生、JSPでEL式っていう${}の記述が出てきたんですが、どうやって使えばいいんですか?」
先生
「良い質問です。EL式は、JSPで変数の値を表示したり、条件を判定したりする便利な構文なんです。」
生徒
「Javaのコードを<% %>で書くよりも簡単に見えますね?」
先生
「そうですね。EL式はとてもシンプルな構文なので、初心者にもおすすめです。それでは基本的な書き方を一緒に見ていきましょう!」
1. EL式の基本構文とは?
EL式(Expression Language)は、JSPで変数の値を参照したり、条件を判定するための記法です。EL式は${}という構文で書き、Javaコードを使わずに値を表示できるのが特徴です。
基本構文は以下のとおりです。
<p>こんにちは、${userName} さん!</p>
この場合、userNameという変数がJSPのスコープに存在すれば、その値が画面に表示されます。
2. EL式で参照できるスコープの順序
EL式で変数を参照するとき、JSPは以下のスコープの順番で変数を探します。
- pageスコープ
- requestスコープ
- sessionスコープ
- applicationスコープ
つまり、同じ名前の変数が複数のスコープに存在するときは、最も狭いスコープの変数が優先されるということです。
将来を見据えて、+αのスキルを身につけたい方へ
JavaやLinuxを学んでいても、「このままで市場価値は上がるのか」 「キャリアの選択肢を広げたい」と感じる方は少なくありません。
AIを学ぶならアイデミープレミアム3. スコープを明示して変数を参照する
変数名が重複していたり、明確にスコープを指定したい場合は、以下のように書くことができます。
${pageScope.name}
${requestScope.name}
${sessionScope.name}
${applicationScope.name}
このように書くことで、どのスコープにある変数なのかを明示的に指定できます。
4. JavaBeansのプロパティアクセス
EL式では、オブジェクトのプロパティに簡単にアクセスすることができます。たとえば、Userというオブジェクトにnameというプロパティがある場合、次のように記述します。
${user.name}
このとき、内部的にはgetName()メソッドが呼び出されます。セッターやゲッターが正しく実装されている必要があります。
5. 配列やリストの要素を取り出す構文
配列やリストの要素にアクセスする場合、インデックス番号を使って参照することができます。
${fruits[0]}
このように書けば、配列fruitsの0番目の要素が表示されます。リストにも同じ構文が使えます。
6. Mapの値をEL式で取得する方法
EL式では、Mapの値にも簡単にアクセスできます。以下は、userMapというMapからemailの値を取得する例です。
${userMap["email"]}
文字列キーを使って、目的の値を取り出すことができます。シングルクォート'email'でも動作します。
7. nullや空値の判定に使えるempty演算子
EL式では、変数がnullまたは空であるかを判定するemptyという演算子があります。以下のように使います。
${empty userName}
この式は、userNameがnullまたは空文字列の場合にtrueを返します。
8. 条件判定に使える比較演算子
EL式では以下のような比較演算子を使って、条件判定を行うことができます。
==:等しい!=:等しくない>:より大きい<:より小さい>=:以上<=:以下
たとえば、スコアが60以上かを判定するには以下のように書きます。
<c:if test="${score >= 60}">
合格です
</c:if>
9. 論理演算子の使い方(and / or)
複数条件を組み合わせる場合には、論理演算子を使います。
&&(またはand)||(またはor)
次のように記述できます。
<c:if test="${age >= 18 && isMember}">
入場できます
</c:if>
EL式では、andやorという英語表記も使用可能です。
10. EL式で数値や文字列を結合する方法
EL式では+演算子を使って文字列や数値を結合することができます。
${"合計:" + total + "円"}
数値同士で+を使うと加算され、文字列が含まれると連結になります。型によって動作が異なるため注意が必要です。