7.4.5 EL中的枚举类型

优质
小牛编辑
129浏览
2023-12-01

枚举类型是Java SE5新增加的特性。使用enum关键字来定义枚举类型,如下面的代码所示:

如果在Java代码中使用枚举类型,可将枚举类型中的值当成常量来处理,也可以使用字符串来为枚举类型变量赋值,便必须使用Enum..valueOf方法将字符串转换成枚举类型。下面的代码演示了Java代码操作枚举类型变量的过程:

<%!

    enum Seasons{SPRING, SUMMER, AUTUMN, WINTER}

%>

<%

    Seasons season = Seasons.SPRING;

    out.println(season);        //  输出SPRING

    //  使用字符串为枚举类型变量赋值

    season=Enum.valueOf(Seasons.class, "AUTUMN");

    out.println(season);        //  输出AUTUMN

%>

如果直接枚举类型变量,则会将变量值当成字符串输出。

在EL表达式中也可以直接输出枚举类型变量,也可以对枚举类型变量进行逻辑判断。但要将枚举类型中的值当成字符串来处理,也就是要将枚举类型的值用单引号或双引号括起来。下面的代码演示了如何在EL表达式中来使用枚举类型变量:

<!--  enum.jsp  -->

<%@ page language="java" pageEncoding="UTF-8"%>

<%!

    enum Seasons{SPRING, SUMMER, AUTUMN, WINTER}

%>

<%

    Seasons season = Seasons.SPRING;

    request.setAttribute("season", season);

%>

<!--  输出SPRING  -->

\${season}:${season}<br>

<!--  输出true  -->

\${season == "SPRING" }:${season == "SPRING" }<br>

<!--  输出false  -->

\${season == "SPRING" }:${season == 'AUTUMN' }<br>

<!--  如果请求参数为SPRING,输出true,否则输出false  -->

\${season == "SPRING" }:${season == param.season}

在浏览器地址栏中输入如下的URL:

http://localhost:8080/demo/chapter7/enum.jsp?season=AUTUMN

浏览器输出的信息如图7.9所示。

09

图7.9 在EL表达式中使用枚举类型变量

在EL表达式中用字符串来代替枚举类型值进行逻辑判断时,必须要考虑开字符串的大小写。也就是说,season请求参数的值必须是Seasons枚举类型中的四个值,而且大小写要一致,否则enum.jsp页面中最后一个EL表达式将抛出异常。

注意:由于目前很多开发JSP的IDE(如MyEclipse等)还不支持在EL表达式中对枚举类型的变量进行逻辑判断,例如,${session="SPRING"},因此,在这些IDE中编写JSP页面时,如果在EL表达式使用枚举类型的变量进行逻辑判断,IDE可能会提示语法错误,不过这并不影响JSP的运行。读者在使用IDE开发JSP页面时应注意这一点。