最近开发一个网站,经常使用JSTL,这种语法与以前的不同,开始用着非常吃力,今天总结一下,供大家参考。
一、前言
JSTL全名为JavaServer Pages Standard Tag Library,JSTL是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库。
二、导入使用
2.1 在pom.xml里面添加jar包
<!-- JSTL --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>
2.2 在jsp文件头添加说明
<%@ 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/functions" prefix="fn" %>
2.3 添加文件夹
在相目\WEB-INF\tld\文件夹中放入常用的tld文件:c.tld,fmt.tld
三、核心标签库
JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:
- 表达式控制标签:out、set、remove、catch
- 流程控制标签:if、choose、when、otherwise
- 循环标签:forEach、forTokens
- URL操作标签:import、url、redirect
3.1 <c:forEach> 标签
为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。
3.1.1 <c:forEach> 标签的语法:
3.1.1.1 基本语法
迭代一集合对象之所有成员
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> 本体内容 </c:forEach>
迭代指定的次数
<c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]> 本体内容 </c:forEach>
3.1.1.2 事例:
普通事例:
<c:forEach items="${compareShowDto.tgtColumnMetaDataList}" var="item"> <th>${item.name}</th> </c:forEach>
嵌套foreach事例:
<c:forEach items="${compareShowDto.compareColumnMetaData}" var="rows"> <tr <c:if test="${rows.theSame==‘false‘}"> style="color:red" </c:if>> <td style="background-color: #f5f5f5">${rows.theSame}</td> <c:forEach items="${rows.srcRowData.columnObjects}" var="item"> <td><c:out value="${item}"/></td> </c:forEach> <td style="background-color: #ff7800;"></td> <c:forEach items="${rows.tgtRowData.columnObjects}" var="item"> <td><c:out value="${item}"/></td> </c:forEach> </tr> </c:forEach>
3.1.1.3 <c:forEach> 标签的 属性说明 :
3.1.1.4 <c:forEach> 标签的 属性 : varStatus属性: 它的提供另外四个属性:index,count,fist和last,它们个自的意义如下:
属性 类型 意义 index number 现在指到成员的索引 count number 总共指到成员的总和 first boolean 现在指到成员是否为第一个 last boolean 现在指到成员是否为最后一个
<c:forEach> 遍历 List列表:
对于一个基本类型的数组,当前元素将作为相应包装类(Integer、Float等等)的一个实例提供。
<c:forEach items="${domainList }" var="item"> <tr> <td align="center" valign="middle">${item["domain"]==null?" ":item["domain"]}</td> <td align="center" valign="middle"><fmt:formatDate value="${item[‘bind_date‘]}" pattern="yyyy-MM-dd HH:mm:ss"/></td> <td align="center" valign="middle"> <c:if test="${item[‘domain‘]!=null}"> <a href="javascript:;" id="${item[‘domain‘]}" class="del"> </a> </c:if> </td> </tr> </c:forEach>
<c:forEach> 遍历Map:
对于一个java.util.Map,当前元素则作为一个java.util.Map.Entry提供。
<c:if test="${!empty permissionMap}"> <c:forEach items="${permissionMap}" var="item"> <tr> <td>${item.value.id}</td> <td>${item.value.urlOnClass}</td> <td>${item.value.urlOnMethod}</td> </tr> </c:forEach> </c:if>
时间: 2024-10-05 13:08:57