JSTL中foreach與fn表達式

在jstl中的fn標籤也是咱們在網頁設計中常常要用到的很關鍵的標籤,在使用的時候要先加上頭html

<%@ taglib uri=" http://java.sun.com/jsp/jstl/functions " prefix="fn"%>就可使用fn標籤了。java

具體使用方法請參見下表:數組

函數session

描述jsp

fn:contains(string, substring)函數

若是參數string中包含參數substring,返回true測試

fn:containsIgnoreCase(string, substring)spa

若是參數string中包含參數substring(忽略大小寫),返回true設計

fn:endsWith(string, suffix)code

若是參數 string 以參數suffix結尾,返回true

fn:escapeXml(string)

將有特殊意義的XML (和HTML)轉換爲對應的XML character entity code,並返回

fn:indexOf(string, substring)

返回參數substring在參數string中第一次出現的位置

fn:join(array, separator)

將一個給定的數組array用給定的間隔符separator串在一塊兒,組成一個新的字符串並返回。

fn:length(item)

返回參數item中包含元素的數量。參數Item類型是數組、collection或者String。若是是String類型,返回值是String中的字符數。

fn:replace(string, before, after)

返回一個String對象。用參數after字符串替換參數string中全部出現參數before字符串的地方,並返回替換後的結果

fn:split(string, separator)

返回一個數組,以參數separator 爲分割符分割參數string,分割後的每一部分就是數組的一個元素

fn:startsWith(string, prefix)

若是參數string以參數prefix

開頭,返回true

fn:substring(string, begin, end)

返回參數string部分字符串, 從參數begin開始到參數end位置,包括end位置的字符

fn:substringAfter(string, substring)

返回參數substring在參數string中後面的那一部分字符串

fn:substringBefore(string, substring)

返回參數substring在參數string中前面的那一部分字符串

fn:toLowerCase(string)

將參數string全部的字符變爲小寫,並將其返回

fn:toUpperCase(string)

將參數string全部的字符變爲大寫,並將其返回

fn:trim(string)

去除參數string 首尾的空格,並將其返回

稱呼Functions標籤庫爲標籤庫,倒不如稱呼其爲函數庫來得更容易理解些。由於Functions標籤庫並無提供傳統的標籤來爲JSP頁面的工做服務,而是被用於EL表達式語句中。在JSP2.0規範下出現的Functions標籤庫爲EL表達式語句提供了許多更爲有用的功能。Functions標籤庫分爲兩大類,共16個函數。

長度函數:fn:length

字符串處理函數:fn:contains、fn:containsIgnoreCase、fn:endsWith、fn:escapeXml、fn:indexOf、fn:join、fn:replace、fn:split、fn:startsWith、fn:substring、fn:substringAfter、fn:substringBefore、fn:toLowerCase、fn:toUpperCase、fn:trim

如下是各個函數的用途和屬性以及簡單示例。

1. 長度函數fn:length 函數

長 度函數fn:length 的出現有重要的意義。在JSTL1.0 中,有一個功能被忽略了,那就是對集合的長度取值。雖然 java.util.Collection 接口定義了size 方法,可是該方法不是一個標準的JavaBean 屬性方法(沒有get,set 方法),因 此,沒法經過EL 表達式「${collection.size}」 來輕鬆取得。

fn:length 函數正是爲了解決這個問題而被設計出來的。它的參數爲input ,將計算經過該屬性傳入的對象長度。該對象應該爲集合類型或String 類型。其返回結果是一個int 類型的值。下面看一個示例。

<%ArrayList arrayList1 = new ArrayList();

arrayList1.add("aa");

arrayList1.add("bb");

arrayList1.add("cc");

%>

<% request.getSession().setAttribute("arrayList1", arrayList1);%>

$ {fn:length(sessionScope.arrayList1)}

假設一個ArrayList 類型的實例「arrayList1」 ,併爲其添加三個字符串對象,使用fn:length 函數後就能夠取得返回結果爲「3」 。

2. 判斷函數fn:contains 函數

fn:contains 函數用來判斷源字符串是否包含子字符串。它包括string 和substring 兩個參數,它們都是String類型,分佈表示源字符串和子字符串。其返回結果爲一個boolean 類型的值。下面看一個示例。

$ {fn:contains("ABC", "a")}<br>

$ {fn:contains("ABC", "A")}<br>

前者返回「false」 ,後者返回「true」 。

3. fn:containsIgnoreCase 函數

fn:containsIgnoreCase 函數與fn:contains 函數的功能差很少,惟一的區別是fn:containsIgnoreCase 函數對於子字符串的包含比較將忽略大小寫。它與 fn:contains 函數相同,包括string 和substring 兩個參數,並返回一個boolean 類型的值。下面看一個示例。

$ {fn:containsIgnoreCase("ABC", "a")}<br>

$ {fn:containsIgnoreCase("ABC", "A")}<br>

前者和後者都會返回「true」 。

4. 詞頭判斷函數fn:startsWith 函數

fn:startsWith 函數用來判斷源字符串是否符合一連串的特定詞頭。它除了包含一個string 參數外,還包含一個subffx 參數,表示詞頭字符串,一樣是String 類型。該函數返回一個boolean 類型的值。下面看一個示例。

$ {fn:startsWith ("ABC", "ab")}<br>

$ {fn:startsWith ("ABC", "AB")}<br>

前者返回「false」 ,後者返回「true」 。

5. 詞尾判斷函數fn:endsWith 函數

fn:endsWith 函數用來判斷源字符串是否符合一連串的特定詞尾。它與fn:startsWith 函數相同,包括string 和subffx 兩個參數,並返回一個boolean 類型的值。下面看一個示例。

$ {fn:endsWith("ABC", "bc")}<br> $ {fn:endsWith("ABC", "BC")}<br>

前者返回「false」 ,後者返回「true」 。

6. 字符實體轉換函數fn:escapeXml 函數

fn:escapeXml 函數用於將全部特殊字符轉化爲字符實體碼。它只包含一個string 參數,返回一個String 類型的值。

7. 字符匹配函數fn:indexOf 函數

fn:indexOf 函數用於取得子字符串與源字符串匹配的開始位置,若子字符串與源字符串中的內容沒有匹配成功將返回「-1」 。它包括string 和substring 兩個參數,返回結果爲int 類型。下面看一個示例。

$ {fn:indexOf("ABCD","aBC")}<br> $ {fn:indexOf("ABCD","BC")}<br>

前者因爲沒有匹配成功,因此返回-1 ,後者匹配成功將返回位置的下標,爲1 。

8. 分隔符函數fn:join 函數

fn:join 函數容許爲一個字符串數組中的每個字符串加上分隔符,並鏈接起來。它的參數、返回結果和描述如表所示:

表 fn:join 函數

參數

描述

array

字符串數組。其類型必須爲String[] 類型

separator

分隔符。其類型必須爲String 類型

返回結果

返回一個String 類型的值

下面看一個示例。

<% String[] stringArray = {"a","b","c"}; %>

<% request.getSession().setAttribute("stringArray", stringArray);%>

$ {fn:join(sessionScope.stringArray,";")}<br>

定義數組並放置到Session 中,而後經過Session 獲得該字符串數組,使用fn:join 函數並傳入分隔符「;」 ,獲得的結果爲「a;b;c」 。

9. 替換函數fn:replace 函數

fn:replace 函數容許爲源字符串作替換的工做。它的參數、返回結果和描述如表所示:

表 fn:replace 函數

參數

描述

inputString

源字符串。其類型必須爲String 類型

beforeSubstring

指定被替換字符串。其類型必須爲String 類型

afterSubstring

指定替換字符串。其類型必須爲String 類型

返回結果

返回一個String 類型的值

下面看一個示例。

$ {fn:replace("ABC","A","B")}<br>

將「ABC」 字符串替換爲「BBC」 ,在「ABC」 字符串中用「B」 替換了「A」 。

10. 分隔符轉換數組函數fn:split 函數

fn:split 函數用於將一組由分隔符分隔的字符串轉換成字符串數組。它的參數、返回結果和描述如表所示:

表 fn:split 函數

參數

描述

string

源字符串。其類型必須爲String 類型

delimiters

指定分隔符。其類型必須爲String 類型

返回結果

返回一個String[] 類型的值

下面看一個示例。

$ {fn:split("A,B,C",",")}<br>

將「A,B,C」 字符串轉換爲數組{A,B,C} 。

11. 字符串截取函數fn:substring 函數

fn:substring 函數用於截取字符串。它的參數、返回結果和描述如表所示:

表 fn:substring 函數

參數

描述

string

源字符串。其類型必須爲String 類型

beginIndex

指定起始下標(值從0 開始)。其類型必須爲int 類型

endIndex

指定結束下標(值從0 開始)。其類型必須爲int 類型

返回結果

返回一個String 類型的值

下面看一個示例。

$ {fn:substring("ABC","1","2")}<br>

截取結果爲「B」 。

12.起始到定位截取字符串函數 fn:substringBefore 函數

fn:substringBefore 函數容許截取源字符從開始到某個字符串。它的參數和 fn:substringAfter 函數相同,不一樣的是 substring表示的是結束字符串。下面看一個示例。

$ {fn:substringBefore("ABCD","BC")}<br>

截取的結果爲「 A 」。

13.小寫轉換函數 fn:toLowerCase 函數

fn:toLowerCase 函數容許將源字符串中的字符所有轉換成小寫字符。它只有一個表示源字符串的參數 string ,函數返回一個 String 類型的值。下面看一個示例。

$ {fn:toLowerCase("ABCD")}<br>

轉換的結果爲「 abcd 」。

14.大寫轉換函數 fn:toUpperCase 函數

fn:toUpperCase 函數容許將源字符串中的字符所有轉換成大寫字符。它與 fn:toLowerCase 函數相同,也只有一個 String 參數,並返回一個 String 類型的值。下面看一個示例。

$ {fn:toUpperCase("abcd")}<br>

轉換的結果爲「 ABCD 」。

15.空格刪除函數 fn:trim 函數

fn:trim 函數將刪除源字符串中結尾部分的「空格」以產生一個新的字符串。它與 fn:toLowerCase 函數相同,只有一個 String參數,並返回一個 String 類型的值。下面看一個示例。

$ {fn:trim("AB C ")}D<br>

轉換的結果爲「 AB CD 」,注意,它將只刪除詞尾的空格而不是所有,所以「 B 」和「 C 」之間仍然留有一個空格。

 

示例

Java代碼 

<%@ page contentType="text/html;charset=gbk"%>  

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>  

<html>  

<head>  

<title>這個是 JSTL的    測試</title>  

</head>  

<body>  

<c:set var="str" value="stringStRiNg"/>  

<c:set var="t" value="tr"/>  

<c:out value="${str} = ${fn:length(str)}"/>  

<c:out value="${fn:toLowerCase(str)}"/>  

<c:out value="${fn:toUpperCase('   ')}"/>  

<c:out value="${fn:toUpperCase('AbCdEfg')}"/><br>  

<c:out value="${fn:substring('asdfefg',0,3)}"/><br>  

<c:out value="${fn:substringAfter('asdf','s')}"/><Br>  

<c:out value="${fn:substringBefore(str,'g')}"/><Br>  

<c:out value="${fn:trim(' sd dew e ')}"/><Br>  

<c:out value=" d sd dew e "/><Br>  

<c:out value="${fn:replace(str,'ing','IN')}"/><Br>  

</body>  

</html>  

 與forEach 綁定使用

Java代碼 

<c:set var="naturesList" value="${fn:split('幽默,樂觀,外向,內向',',')}"/>  

<c:forEach var="nature" items="${naturesList}" varStatus="varStatus">  

 <span><form:checkbox path="natures" value="${nature}"/><label for="natures<c:out value="${varStatus.index+1}"/>"><c:out value="${nature}"/></label></span>  

</c:forEach>  

<span>  

</span>  

  在el中嵌套el的使用

Java代碼 

<c:set var="userList" value="${fn:split(userIds,',')}"/>   

                        <c:forEach var="user" items="${userList}" varStatus="varStatus">    

                            <c:out value="${user}"/>  

                        </c:forEach>   

相關文章
相關標籤/搜索