<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
EL表达式下面注意点
如果连接过来的参数 要加上param,如 param.id
如果参数放在request中的,要加上requestScope 的使用
1 创建变量与修改变量
创建 <c:set var="name" value="-1"></c:set>
修改 <c:set var="name" value="9"></c:set>
创建数组:
<c:set var="provinces_arrs" value="北京,广东,上海,广西,海南,湖北,江西,江苏,浙江,福建,安徽,云南,贵州,四川,重庆,天津,河南,河北,山东,山西,辽宁,吉林,黑龙江,陕西,青海,西藏,新疆,新疆兵团,甘肃,宁夏,内蒙古,香港,澳门,台湾,国外"></c:set>
2 if else 的使用
<c:choose>
<c:when test="${param.name ne 'wang'}">
如果内容
</c:when>
<c:otherwise>
else 需要处理的事情
</c:otherwise>
</c:choose>
3 循环使用
<c:forEach var="user" items="${listUser}">
<c:if test="${user.id==param.id }">
${user.id }
</c:if>
</c:forEach>
嵌套循环:
<c:forEach var="user" items="${userList}" varStatus="status" step="3">
取出list中当前元素的第一个数据:${ userList[status.index] }
取出list中当前元素的第二个数据:${ userList[status.index+2].subjectId }
取出list中当前元素的第三个数据:${ userList[status.index+3].subjectId }
<c:forEach var="userClass" items="${ userClassList}" >
<c:if test="${user[status.index].classId eq userClass.classId}">
判断当前用户 与 内部循环中的班级id是否相等
</c:if>
</c:forEach>
</c:forEach>
count当前这次迭代从 1 开始的迭代计数 status.count
4 if使用
<c:if test="${count gt 0}">
<c:set var="name" value="1"></c:set>
</c:if>
5 日期格式化: 返回字符串
<fmt:formatDate var="now" value="<%=new Date()%>" pattern="yyyy-MM-dd HH:mm:ss"/>
6 数字格式化
<fmt:formatNumber value="${discount*10}" minFractionDigits="0" groupingUsed="false" var="discount"/>
7 显示钱
<fmt:formatNumber var="price" value="${price_}" type="currency" pattern=".##" />
8 特殊符号标记
== eq 等于
!= ne 不等于
> gt 大于
< lt 小于
>= ge 大于等于
<= le 小于等于
9 循环 List<Map> 数据
<%
Map map1 = new HashMap();
Map map2 = new HashMap();
Map map3 = new HashMap();
Map map4 = new HashMap();
Map map5 = new HashMap();
map1.put("201107", "500");
map2.put("201108", "800");
map3.put("201109", "700");
map4.put("201110", "200");
map5.put("201111", "600");
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
list.add(map1);
list.add(map2);
list.add(map3);
list.add(map4);
list.add(map5);
request.setAttribute("list",list);
%>
//list里放的是map,var就是map类型
//然后再循环map,entity就是key,value键值对,这样就可以了
<c:forEach var="map" items="${list}" >
<c:forEach var="entry" items="${map}">
<c:out value="${entry.key}" />|<c:out value="${entry.value}" />
</c:forEach>
</c:forEach>
10 contains函数
这个函数只能判断字符串包含关系,如果用来判断List,则如果list中包含一个16 和5 ,那如果要判断的字符串为1 ,则函数一样会给一个true的
下面这个方法结果是无法确定的
<c:if test="${fn:contains(subjecidtList, subjects.id)}">checked</c:if>
11 List包含对象,找了好久没找到好的处理方法,只能循环一遍了
<c:set var="isHaveRole" value="false"/>
<c:forEach var="userRoleId" items="${userRoleIdList }">
<c:if test="${userRoleId eq role.id}">
<c:set var="isHaveRole" value="true"/>
</c:if>
</c:forEach>