S-JIS[2007-06-17/2009-11-28]

JSP式言語

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}
${cookie.key.value}
<% for (Cookie c : request.getCookies()) {
    if ("key".equals(c.getName())) {
      out.println(c.getName());
      out.print(c.getValue());
      break;
    }
} %>
initParam web.xmlに指定されている初期化パラメーター
<web-app 〜>

 <context-param>
  <param-name>name</param-name>
  <param-value>value</param-value>
 </context-param>

</web-app>
${initParam.name} <%= pageContext.getServletContext()
      .getInitParameter("name") %>

${演算}

EL内では、演算を書くことも出来る。演算した結果が、出力先の型に自動的に変換される。

<test:tag attribute="${value < 100}" />
<test:tag attribute="${value lt 100}" />
演算子 備考
[] 配列やマップの要素を指定する。
普通のビーンの場合は、プロパティーを指定したのと同等。
${map["key"]}
${map['key']}
${bean['name']}
! not
empty
  ${empty bean.name}
*
/ div
% mod
   
+ -    
<  >  lt gt
<= >= le ge
   
== eq
!= ne
   
&& and    
|| or    
?: 三項演算子  

普通、「<」や「>」はタグの開始・終了として認識されてしまうのだが、EL内では大丈夫。
だが、「lt」や「gt」といった別名も使える。


JSPへ戻る / Java目次へ戻る
メールの送信先:ひしだま