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