var flag = "${ ! empty userList }";
var flag = "${ not empty userList }";
var flag = "${ userList != null}";
三者等价 都是true
EL表达式
${list[index]}
<c:forEach items="sessionScope.list" var="l">
然后在这里面进行获取${l.XXX}
</c:forEach>
如 ${"userlist[i]"}
EL提供.和[]两种运算符来存取数据。下列两者所代表的意思是一样的:
等于
.和[]也可以同时混合使用,如下:
不过,以下两种情况,两者会有差异:
(1)当要存取的属性名称中包含一些特殊字符,如.或-等非字母或数字的符号,就一定要使用[],例如:
上述是不正确的方式,应当改为:
在使用EL关系运算符时,不能写成:
${param.password1}= =${param.password2}
或者
${${param.password1}= =${param.password2}}
而应该写成
${param.password1= =param.password2}
1.算术运算符有五个:+、-、*或$、/或div、%或mod
2.关系运算符有六个:(等价的) ==或eq、 !=或ne、 <或lt、>或gt、<=或le、>=或ge
3.逻辑运算符有三个:&&或and、||或or、!或not
4.其它运算符有三个:Empty运算符、条件运算符、()运算符
例:${empty param.name}、${A?B:C}、${A*(B+C)}
<%-- 显示一级菜单 --%>
<s:iterator value="#application.topPrivilegeList">
<s:if test="#session.user.hasPrivilegeByName(name)">
<li class="level1">
<div onClick="menuClick(this);" class="level1Style">
<img src="style/images/MenuIcon/${id}.gif" class="Icon" />
${name}
</div>
思考 : 针对 EL表达式不能调用方法;
但是使用权限时候,为了无权限的不显示,看出上面调用的方式是: 遍历所有权限,<s:if 判断有权限的显示,无权限的不显示
那么要么使用struts2 OGNL表达式,要么 在Action直接遍历所有,一级一级的放入到ArrayList中
EL表达式
<!-- currentRoleId是存在request域中的、sysAdmin是存在application域中的,即servletContext中 -->
<c:if test="${empty currentRoleId}">
currentRoleId为空
</c:if>
<c:if test="${not empty currentRoleId}">
currentRoleId不为空
</c:if>
<!-- 判断两者是否相等 -->
<c:if test="${requestScope.currentRoleId eq applicationScope.sysAdmin}">
currentRoleId和sysAdmin相等
</c:if>
<!-- 在这里就不是和empty一样了,在这里el表达式不相等不像判断是否为空那样,不为空是not empty,在这里不相等不是not eq,表示不相等应如下所示的取反操作 -->
<c:if test="${!(requestScope.currentRoleId eq applicationScope.sysAdmin)}">
currentRoleId和sysAdmin不相等
</c:if>
<!-- 不使用jstl判断,使用三目表达式输出 -->
${!(requestScope.currentRoleId eq applicationScope.sysAdmin) ? "两者不相等" : "两者相等"}
${not empty currentRoleId ? "不为空" : "为空"}
[html] view plaincopyprint?
<!-- currentRoleId是存在request域中的、sysAdmin是存在application域中的,即servletContext中 -->
<c:if test="${empty currentRoleId}">
currentRoleId为空
</c:if>
<c:if test="${not empty currentRoleId}">
currentRoleId不为空
</c:if>
<!-- 判断两者是否相等 -->
<c:if test="${requestScope.currentRoleId eq applicationScope.sysAdmin}">
currentRoleId和sysAdmin相等
</c:if>
<!-- 在这里就不是和empty一样了,在这里el表达式不相等不像判断是否为空那样,不为空是not empty,在这里不相等不是not eq,表示不相等应如下所示的取反操作 -->
<c:if test="${!(requestScope.currentRoleId eq applicationScope.sysAdmin)}">
currentRoleId和sysAdmin不相等
</c:if>
<!-- 不使用jstl判断,使用三目表达式输出 -->
${!(requestScope.currentRoleId eq applicationScope.sysAdmin) ? "两者不相等" : "两者相等"}
${not empty currentRoleId ? "不为空" : "为空"}
## Jstl 表达式
<c:forEach>标签提供了varStatus属性,有时候这个属性的作用非常强大,主要是用来存放现在知道的成员的相关信息.
例如:
定义 varStatus="s",那么将会吧有关集合中的信息放在名称为"s"的属性中,这里的"s"也是四作用域中的属性名,对应着的属性值内部会存有相关的集合中的信息.而varStatus属性还有另外4个子属性,他们是index,count,first和last,这些全都是属性名,可以在EL表达式中通过这些属性名访问"s"中的对应的属性值.详细说明如下:
属性名 数据类型 意义
index number 现在指到的集合成员的索引(下标从0开始)
count number 指到的成员数目
first boolean 现在指到的集合成员是否为第一个成员
last boolean 现在知道的集合成员是否为最后一个成员
例:
<%
String[] names={"John","Lisa","James"};
session.setAttribute("names",names);
%>
<c:forEach var="name" items="${names}" varStatus="s">
<h3>
<c:out value="${name}"></c:out>
</h3>
index:<c:out value="${s['index']}"></c:out><br/>
count:<c:out value="${s['count']}"></c:out><br/>
first:<c:out value="${s['first']}"></c:out><br/>
last:<c:out value="${s['last']}"></c:out><br/>
<hr/>
</c:forEach>
Jstl 总结
最新推荐文章于 2021-08-31 18:58:19 发布
本文深入探讨了EL表达式在JSP页面中的使用,包括变量、数组访问、算术运算、关系和逻辑运算,以及如何利用EL表达式进行权限判断和条件输出。此外,还详细介绍了JSTL的`c:forEach`标签及其varStatus属性的强大功能,展示了如何通过此属性获取集合成员的相关信息。
837

被折叠的 条评论
为什么被折叠?



