JSP 2.0 Expression Language[java.sun.com]

昨日リンクだけ張ったやつの簡単なまとめ。

  • JSP 2.0 EL expressionは常に ${ と } で囲まれる。
  • タグの中では、アトリビュートとしてのみ使用できる。 ex) これはダメ→ <${tag} var="x"/>
  • EL variablesはオブジェクト。 beanのデータも簡単に取り出し可能。 ex) cartという名前でbeanがセッションにおかれているとすれば → ${cart.itemCount}
  • JavaBeansのプロパティを呼び出すには"."を使う。 ex) ${pageContext.servletrContext.servletContextName} こんな風に実行される→ pageContext.getServletContext().getServletContextName()
  • Javaではa.getB().getC()のa.getB()がnullの場合NullPointerExceptionになるが、ELでは${a.b}がnullの場合、${a.b.c}はexceptionではなくnullになる。
  • "[]"を使ってListやMapにアクセスする。ex) ${color[1]}
  • Mapにアクセスする時は${header["host"]}のようにインデックスには"[]"を使う。 "."を使うことも可能だが、注意が必要。例えば ${header.user-agent}とすると、"user マイナス agent"とパースされるので、結果は0になる。
  • "="やJSTLで指定されるvariableはディフォルトでページスコープになる(=ページコンテキスト アトリビュート)。
  • 他のスコープのvariableは、pageScope, requestScope, sessionScope, or applicationScopeを使ってアクセスできる。 ex) ${sessionScope.myVariable} また、のscopeアトリビュートを使ってvariableのスコープを定義する。 ex)
  • ELはnullの変わりに空文字や"0"に置き換える。 JSTLのdefaultアトリビュートでnullの時のバリューを設定することができる。 ex) これをELのみで書くと ${colors[1024]} == null ? "transparent" : colors[1024]}
  • JSTLでMapのバリューをIterateする時のvariableのタイプはjava.util.Map.Entry。 key, valueにアクセスする時はvariableの名前に".key" ".value"を使う。