iT邦幫忙

DAY 23
5

C# Web 開發 跳到 Java Web開發系列 第 20

[JSTL] fn 方法庫

今天我們會來看JSTL裡面比較特別的一個方法庫fn。他和之前的JSTL都不太一樣,它主要是作用於EL裡面而不是之前看到的<prefix:tagName>的形式。因此稱之為方法庫而不是標籤。
(和我部落格同時發佈:http://www.dotblogs.com.tw/alantsai/archive/2013/10/15/jstll-fn.aspx
fn 方法庫的基本介紹
fn全稱是function,因為prefix都是給fn因此稱之為fn。從名字可以看出來,其實它提供的方法就是和function有關,而大部份都是和java裡面的String function有關。

fn主要的好處是讓我們再作判斷的時候能夠更容易做到。

fn和其他標籤一樣,需要用taglib directive來加進來,而他的uri是:http://java.sun.com/jsp/jstl/function。

fn是使用在EL裡面而結構都是:fn:functionName()。

fn:contains(String, String)
這一個會判斷第二個參數是否存在於第一個參數裡面,如果有返回true,沒有則false。和java String.contains()一樣概念。

範例:

<c:if test="${fn:contains(header.host, 'localhost') }">  
   this is from local
 </c:if> 

如果header裡面的host有localhost的字樣,就輸出對應內容。

fn:containsIgnoreCase(String, String)
和fn:contains()一樣,差別是不區分大小寫。

fn:endsWith(String, String)
用來判斷參數1最後是否和參數2一致。如果一致就返回true,要不然就false。

這個用在判斷例如上傳檔案的文件類型很好用。

範例:

<c:set var="file" value="upload.jpg" />  
 <c:if test="${fn:endsWith(file, '.jpg') }">     
this is a picture 
</c:if> 

假設今天我們有一個variable要判斷是否是圖片,我們可以用fn:endsWith達到。

fn:startsWith(String, String)
和endsWith一樣,不過這次是看參數一的開頭是否和參數二符合。

fn:escapeXml(String)
這個和c:out裡面的escapeXml一樣的作用,就是把一些例如<編碼,讓有些地方輸出才不會有問題。

在c:out裡面,編碼過的內容是直接輸出來。如果有需要儲存成為參數,fn:escapeXml()就適合。

fn:indexOf(String, String)
相信這個不用怎麼介紹,和String indexOf()一樣,如果沒有找到,返回-1.

fn:split(String, String)
這個也是String常用的,把一個String切割成為String Array然後在做loop。

fn:join(String[], String)
應該也是常用的,把一個String array用符號做間隔變成一個String。和fn:split剛好相反。

fn:length(object)
這個應該也不陌生。不過依照不同傳進去的會有不同效果。例如String的話就是類似length(),Collection就是size()。

結語
其實fn應該對大家來說都很熟悉,畢竟我們平常寫java程式碼都在使用這一些。這邊有包括fn方法庫所以我們就可以更加不需要scriptlet出現在jsp頁面裡面。

透過這一篇,希望大家對於基本如何對string做一些處理和判斷有更深的瞭解。


上一篇
[JSTL] fmt 標籤介紹
下一篇
[JSTL]自定義標籤庫
系列文
C# Web 開發 跳到 Java Web開發27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言