コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

JSPとELを見直そう No. 6 Enumをc:ifで使用する

Java EE 5からELでEnumの比較ができるようになっています。仕様を読んでいて今日知りました。

まず、適当なEnum型を作ります。

package com.example;

public enum Season {
    SPRING, SUMMER, AUTUMN, WINTER
}

次に、Servletを作成します。requestスコープにWINTERを格納します。

package com.example;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/s06")
public class S06Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("season", Season.WINTER);
        request.getRequestDispatcher("/06.jsp").forward(request, response);
    }
}

最後にJSPです。

<%@page import="java.util.Map" %>
<%@page import="java.util.List" %>
<%@page contentType="text/html; charset=utf-8" %><%--
--%><!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="utf-8">
  <title>JSP</title>
 </head>
 <body>
<c:if test="${season == 'WINTER'}">冬です</c:if>
<c:if test="${season != 'WINTER'}">冬ではありません</c:if>
 </body>
</html>

Enumは文字列として比較しますが、内部的にはきちんとEnumとして処理されるようで、Enum型にないものを指定するとエラーになります。意外と使える機会が多い機能ではないでしょうか。

ソースは https://github.com/kuwalab/JSP にあります。

まとめ http://kuwalab.hatenablog.jp/entry/JSP
最初 http://kuwalab.hatenablog.jp/entry/JSP/01
前回 http://kuwalab.hatenablog.jp/entry/JSP/05
次回 http://kuwalab.hatenablog.jp/entry/JSP/07