
EL式は、簡潔な表現でオブジェクトにアクセスができる言語です。
具体的な使い方について解説してきます。
基本的なEL式の構文
基本的には、「${~}」という構文を使います。
文字列を出力する場合
${"HelloWorld"}
ダブルコーテーションで囲うか、シングルコーテーションで囲います。
数字を出力する場合
${123}
数字の場合は、コーテーションで囲う必要がありません。
スクリプトレットで同じことをしようとした場合
スクリプトレットで同じことをしようとした場合は、それぞれ下記のようになりますので、記述がだいぶ簡潔になっていることがわかります。
<% out.print("HelloWorld"); %> <% out.print(123); %>
オブジェクト(スコープ変数)へのアクセス
スクリプトレットで、リクエストスコープに格納した値にアクセスする場合は、下記のように記述しました。
<% out.print(request.getAttribute("name")); %>
EL式では、下記のようになります。
${name}
検索される変数のスコープの仕様について
なお、スコープにも色々と種類があったかと思いますが、下記のように狭い方から順番に検索されます。
nullについて
JavaBeansへのアクセス
例えば、下記のようにスクリプトレットで、JavaBeansのプロパティへアクセスしようとしているソースがあった場合は、下記のようにごちゃごちゃなソースコードになってしまいます。
1 |
<strong>bean.jsp</strong> |
<%@page contentType="text/html; charset=UTF-8" %> <%@page import="bean.*" %> <HTML> <HEAD> <TITLE>BeanTest</TITLE> </HEAD> <BODY> <% TestBean bean = new TestBean(); bean.setName("太郎"); request.setAttribute("bean",bean); %> 名前は、<% out.print(((TestBean)request.getAttribute("bean")).getName()); %>です。 </BODY> </HTML>
TestBean.java(JavaBeans)
package bean; public class TestBean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
EL式に直すと、下記のように非常に簡素な形で、JavaBeansにアクセスすることができます。
名前は、${bean.name}です。
ただ、注意点としては、JavaBeansから、ゲッターメソッドを削除してしまうとEL式がエラーになってしまうので、必ずゲッターメソッドを記述するようにしましょう。
EL式の暗黙オブジェクト
EL式にも、通常のJSPとは別にEL式専用の暗黙オブジェクトがあります。
EL式の暗黙オブジェクトの一覧です。
名前 | 説明 |
---|---|
pageContext | PageContextオブジェクト |
pageScope | ページスコープのMap |
requestScope | リクエストスコープのMap |
sessionScope | セッションスコープのMap |
applicationScope | アプリケーションスコープのMap |
param | リクエストパラメータのMap |
paramValue | 複数の値を持つリクエストパラメータのMap |
header | ヘッダのMap |
headerValue | 複数の値を持つヘッダのMap |
initParam | 初期パラメータのMap |
cookie | クッキーの名前と値のMap |
例えば…
リクエストスコープの暗黙オブジェクトから、値を取得する場合は下記のように記述します。
1 |
{$requestScope.(値)} |
EL式で、条件分岐や、ループ文を使うには?
EL式の制約として、スクリプトレット内(<% ~ %>)では使用できない点というのがあります。(もし、スクリプトレット内で使ってしまうとエラーになってしまいます。)
もし、EL式で、繰り返し分や、条件分岐を使いたい場合は、JSTLというカスタムタグを使うことになります。
JSTLの使い方については下記の記事で解説しています。
この記事へのコメントはありません。