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」といった別名も使える。