JSTL標簽 使用總結,foreach


最近開發一個網站,經常使用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類:

  1. 表達式控制標簽:out、set、remove、catch
  2. 流程控制標簽:if、choose、when、otherwise
  3. 循環標簽:forEach、forTokens
  4. 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?"&nbsp;":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">&nbsp;</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>    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM