7.4.5 EL中的枚举类型
优质
小牛编辑
126浏览
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所示。
图7.9 在EL表达式中使用枚举类型变量
在EL表达式中用字符串来代替枚举类型值进行逻辑判断时,必须要考虑开字符串的大小写。也就是说,season请求参数的值必须是Seasons枚举类型中的四个值,而且大小写要一致,否则enum.jsp页面中最后一个EL表达式将抛出异常。
注意:由于目前很多开发JSP的IDE(如MyEclipse等)还不支持在EL表达式中对枚举类型的变量进行逻辑判断,例如,${session="SPRING"},因此,在这些IDE中编写JSP页面时,如果在EL表达式使用枚举类型的变量进行逻辑判断,IDE可能会提示语法错误,不过这并不影响JSP的运行。读者在使用IDE开发JSP页面时应注意这一点。