Expression Languageを訳して式言語。JSP2.0から導入された。
変数の値を出力するのに使う。従来のJSP式を便利にしたようなもの。
${ 式 }
<sample:tag attribute="${bean.value}" />
|
|
プロパティーの値を出力する。
「${名前}」は、「pageContext.findAttribute("名前")」と同義なんだそうだ。つまり、サーブレットのローカル変数は扱えず、アトリビュートに保持しておかないといけないわけだ。
オブジェクトのプロパティー(属性)の値を出力する。[/2009-11-28]
オブジェクトがBeanであればゲッターメソッドが呼ばれて値が取得される。
オブジェクトがMapであればget()が呼ばれて値が取得される。
「${bean.value}」は、JSP式の「<%=
bean.getValue() >」に相当する。
「${map.key}」は、JSP式の「<%=
map.get("key") >」に相当する。
オブジェクトのプロパティー(属性)の値を出力する。[2009-11-28]
オブジェクトが配列の場合、プロパティーはインデックス(添字)。
${array[0]}
「${obj.name}」は「${obj["name"]}」あるいは「${obj['name']}」と同等。
クォーテーションを付けずに「${obj[name]}」と書くと、添字部分が${name}として解釈され、例えばその値が「value」だったら、「${obj["value"]}」として処理される。
スコープを明示的に指定することが出来る。[2009-11-28]
${requestScope.form.value}
| 暗黙オブジェクト | 内容 | 例 | JSP式相当 |
|---|---|---|---|
| pageScope | ページスコープ | ${pageScope.name} |
<%= pageContext.getAttribute("name")
%> |
| requestScope | リクエストスコープ(リクエストアトリビュート) | ${requestScope.name} |
<%= request.getAttribute("name")
%> |
| sessionScope | セッションスコープ | ${sessionScope.name} |
<%= session.getAttribute("name")
%> |
| applicationScope | アプリケーションスコープ | ${applicationScope.name} |
<%= application.getAttribute("name")
%> |
| pageContext | PageContext | ||
| param | リクエストパラメーター(URIのクエリー文字列) | ${param.name} |
<%= request.getParameter("name")
%> |
| paramValues | リクエストパラメーター(配列で取得) | ${paramValues.name[0]} |
<%= request.getParameterValues("name")[0]
%> |
| header | リクエストヘッダー | ${header["user-agent"]} |
<%= request.getHeader("user-agent")
%> |
| headerValues | リクエストヘッダー(配列で取得) | ${headerValues["user-agent"][0]} |
|
| cookie | クッキー | ${cookie.key.name} |
<% for (Cookie c : request.getCookies())
{ |
| initParam | web.xmlに指定されている初期化パラメーター
<web-app 〜> |
${initParam.name} |
<%= pageContext.getServletContext() |
EL内では、演算を書くことも出来る。演算した結果が、出力先の型に自動的に変換される。
<test:tag attribute="${value < 100}" />
<test:tag attribute="${value lt 100}" />
| 演算子 | 備考 | 例 |
|---|---|---|
[] |
配列やマップの要素を指定する。 普通のビーンの場合は、プロパティーを指定したのと同等。 |
${map["key"]} |
! not |
${empty bean.name} |
|
* |
||
+ - |
||
< > lt gt |
||
== eq |
||
&& and |
||
|| or |
||
?: |
三項演算子 |
普通、「<」や「>」はタグの開始・終了として認識されてしまうのだが、EL内では大丈夫。
だが、「lt」や「gt」といった別名も使える。