如何判断空:
<c:if test="${orderform.name !=null}">
<td align="center" width="20%"> <c:choose> <c:when test="${ empty news.issueNo}"></c:when> <c:otherwise> <span style="font-size:15px">issue : ${news.issueNo }</span> </c:otherwise> </c:choose> </td>
<c:set var="log.logTitle" value="做一个截取字符串长度的测试" <c:choose> <c:when test="${fn:length(log.logTitle) > 10}"> <c:out value="${fn:substring(log.logTitle, 0, 10)}" /> </c:when> <c:otherwise> <c:out value="${log.logTitle}" /> </c:otherwise> </c:choose>
<body> <% Set hashSet = new java.util.HashSet(); hashSet.add(1111); hashSet.add(222); request.getSession().setAttribute("set",hashSet); %> <script> alert(${fn:length(sessionScope.set)}); </script> </body>
jsp拼装:
ForEach:
<c:forEach items="${item.exchangerateScheduleList}" var="schedule" varStatus="status"> <b:Call type="com.techson.util.DateUtil" method="dateToStr" var="scheduleDate"> <b:Param paramclass="java.util.Date" value="${schedule.scheduleDate}"/> <b:Param paramclass="java.lang.String" value="@dd@-@MMM@-@yyyy@"/> </b:Call> <a href="javascript:void(0)" onclick="doEdit('${schedule.internalid}')">${scheduleDate}</a> <c:if test="${!status.last}">,</c:if> </c:forEach>
注意后面那个逗号的巧妙设置。
称呼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
以下是各个函数的用途和属性以及简单示例。
长度函数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”。
fn:contains函数用来判断源字符串是否包含子字符串。它包括string和substring两个参数,它们都是String类型,分布表示源字符串和子字符串。其返回结果为一个boolean类型的值。下面看一个示例。
${fn:contains("ABC", "a")}<br>
${fn:contains("ABC", "A")}<br>
前者返回“false”,后者返回“true”。
9.7.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”。
fn:startsWith函数用来判断源字符串是否符合一连串的特定词头。它除了包含一个string参数外,还包含一个subffx参数,表示词头字符串,同样是String类型。该函数返回一个boolean类型的值。下面看一个示例。
${fn:startsWith ("ABC", "ab")}<br>
${fn:startsWith ("ABC", "AB")}<br>
前者返回“false”,后者返回“true”。
fn:endsWith函数用来判断源字符串是否符合一连串的特定词尾。它与fn:startsWith函数相同,包括string和subffx两个参数,并返回一个boolean类型的值。下面看一个示例。
${fn:endsWith("ABC", "bc")}<br> ${fn:endsWith("ABC", "BC")}<br>
前者返回“false”,后者返回“true”。
fn:escapeXml函数用于将所有特殊字符转化为字符实体码。它只包含一个string参数,返回一个String类型的值。
fn:indexOf函数用于取得子字符串与源字符串匹配的开始位置,若子字符串与源字符串中的内容没有匹配成功将返回“-1”。它包括string和substring两个参数,返回结果为int类型。下面看一个示例。
${fn:indexOf("ABCD","aBC")}<br> ${fn:indexOf("ABCD","BC")}<br>
前者由于没有匹配成功,所以返回-1,后者匹配成功将返回位置的下标,为1。
fn:join函数允许为一个字符串数组中的每一个字符串加上分隔符,并连接起来。它的参数、返回结果和描述如表9.25所示:
表9.25 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”。
fn:replace函数允许为源字符串做替换的工作。它的参数、返回结果和描述如表9.26所示:
表9.26 fn:replace函数
参数 |
描述 |
inputString |
源字符串。其类型必须为String类型 |
beforeSubstring |
指定被替换字符串。其类型必须为String类型 |
afterSubstring |
指定替换字符串。其类型必须为String类型 |
返回结果 |
返回一个String类型的值 |
下面看一个示例。
${fn:replace("ABC","A","B")}<br>
将“ABC”字符串替换为“BBC”,在“ABC”字符串中用“B”替换了“A”。
fn:split函数用于将一组由分隔符分隔的字符串转换成字符串数组。它的参数、返回结果和描述如表9.27所示:
表9.27 fn:split函数
参数 |
描述 |
string |
源字符串。其类型必须为String类型 |
delimiters |
指定分隔符。其类型必须为String类型 |
返回结果 |
返回一个String[]类型的值 |
下面看一个示例。
${fn:split("A,B,C",",")}<br>
将“A,B,C”字符串转换为数组{A,B,C}。
fn:substring函数用于截取字符串。它的参数、返回结果和描述如表9.28所示:
表9.28 fn:substring函数
参数 |
描述 |
string |
源字符串。其类型必须为String类型 |
beginIndex |
指定起始下标(值从0开始)。其类型必须为int类型 |
endIndex |
指定结束下标(值从0开始)。其类型必须为int类型 |
返回结果 |
返回一个String类型的值 |
下面看一个示例。
${fn:substring("ABC","1","2")}<br>
截取结果为“B”。
具体使用方法请参见下表:
函数 |
描述 |
fn:contains(string, substring) |
如果参数string中包含参数substring,返回true |
fn:containsIgnoreCase(string, substring) |
如果参数string中包含参数substring(忽略大小写),返回true |
fn:endsWith(string, suffix) |
如果参数 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 首尾的空格,并将其返回 |
一、循环遍历集合
3、如何使用jstl判断集合是否为空
${use r}为集合,use r为集合名
<c:if te st="${emp ty use r}">无信息!</c:if>为空
<c:if te st="${!emp ty use r}">其它</c:if>非空
4、如何取得集合的大小
${fn:le ngth(集合名<如果是se ssion中的集合则应该加上se ssionScope .键>)}
${fn:le ngth(map)}
5、如何取得保存在se ssion中的对象?
${se ssionScope .键.对象属性}
6、varStatus显示循环变量的状态
例:<tag:forE ach var="curre ntFood" item s="${se ssionScope .foods}" varStatus="status"
<tag:if te st="${status%2==1}">
.....................
</tag:if>
</tag:forE ach>
其中status这个变量就记录了循环变量的状态
7、如何遍历Map集合
<c:forE ach var="foodmap" item s="${se ssionScope .cart}" varStatus="status">
<c:se t var="subtotal" value ="${foodmap.value .be an.foodPrice *foodmap.value .quantity}"></c:se t>
</c:forE ach>
遍历Map集合的值:
foodmap:保存se ssion中的map
foodmap.value :取得map的值,即获取保存在map中的一个对象
要获取对象中的数据,必须用foodmap.value .quantity去点对象的属性(quantity就是对象的属性)
<td style="text-align: center;word-wrap:break-word;overflow:hidden;width: 140px;"> <c:if test="${fareCondition.tripType eq '1'}"> <c:set var="des" value="${fareCondition.transPoint}"></c:set> <c:choose> <c:when test="${fn:contains(des,'[')}"> <c:choose> <c:when test="${fn:contains(des,':')}"> <c:set var="desArr" value="${fn:split(des,':')}"></c:set> <c:set var="desCity" value=""></c:set> <c:forEach items="${desArr}" var="detail"> <c:set var="item" value="${fn:split(detail,'[|]')[1]}"></c:set> <c:if test="${fn:contains(item,',')}" > <c:forEach items="${fn:split(item,',')}" var="dt"> <c:if test="${!fn:contains(desCity,dt)}"> <c:set var="desCity" value="${desCity},${dt}"></c:set> </c:if> </c:forEach> </c:if> <c:if test="${!fn:contains(item,',')}" > <c:if test="${!fn:contains(desCity,item)}"> <c:set var="desCity" value="${desCity},${item}"></c:set> </c:if> </c:if> </c:forEach> <c:set var="destination" value="${fn:substring(desCity,'1',fn:length(desCity))}"></c:set> </c:when> <c:otherwise> <c:set var="destination" value="${fn:split(des,'[|]')[1]}"></c:set> </c:otherwise> </c:choose> </c:when> <c:otherwise> <c:set var="destination" value="${des}"></c:set> </c:otherwise> </c:choose> </c:if> <c:if test="${fareCondition.tripType eq '0'}"> <c:set var="destination" value="${fareCondition.endPoint}"></c:set> </c:if> <script> var s="${destination}"; s=s.replace(/(.{1,20})(?=\s|\b|$)/g,"$1\r\n"); document.write(s); </script> </td>
一、循环遍历集合 1、在jsp中引入标准函数声明 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 2、若要判断集合的大小,则需要引入如下声明 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 3、如何使用jstl判断集合是否为空 ${user}为集合,user为集合名 <c:if test="${empty user}">无信息!</c:if>为空 <c:if test="${!empty user}">其它</c:if>非空 4、如何取得集合的大小 ${fn:length(集合名<如果是session中的集合则应该加上sessionScope.键>)} ${fn:length(map)} 5、如何取得保存在session中的对象? ${sessionScope.键.对象属性} 6、varStatus显示循环变量的状态 例:<tag:forEach var="currentFood" items="${sessionScope.foods}" varStatus="status" <tag:if test="${status%2==1}"> ..................... </tag:if> </tag:forEach> 其中status这个变量就记录了循环变量的状态 7、如何遍历Map集合 <c:forEach var="foodmap" items="${sessionScope.cart}" varStatus="status"> <c:set var="subtotal" value="${foodmap.value.bean.foodPrice*foodmap.value.quantity}"></c:set> </c:forEach> 遍历Map集合的值: foodmap:保存session中的map foodmap.value:取得map的值,即获取保存在map中的一个对象 要获取对象中的数据,必须用foodmap.value.quantity去点对象的属性(quantity就是对象的属性) 8、对象属性为空显示默认值 <c:forEach var="customer" items="${customers}"> <tr> <td><c:out value="${customer.lastName}"/></td> <td><c:out value="${customer.phoneHome}" default="no home phone specified"/></td> <td> <c:out value="${customer.phoneCell}" escapeXml="false"> <font color="red">no cell phone specified</font> </c:out> </td> </tr> </c:forEach>
相关推荐
**JSTL(JavaServer Pages Standard Tag Library)详解** JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中的一个标准标签库,它为JSP开发者提供了丰富的、可重用的组件,用于处理常见任务,如...
在IT行业中,标准库(Standard Tag Library,简称`standard`)和JavaServer Pages Standard Tag Library(JSTL)是用于构建动态Web应用的关键组件。这些库提供了预定义的标签,帮助开发者更高效地编写JSP页面,减少...
`jstl-api-1.2.jar` 和 `jstl-impl-1.2.jar` 是JSTL的两个关键组件: 1. **jstl-api-1.2.jar**:这是JSTL的API接口定义,包含了所有JSTL标签库的接口和抽象类。开发人员在编写JSP页面时需要导入这个包,以便使用...
**JSTL(JavaServer Pages Standard Tag Library)中文帮助文档** JSTL 是一套用于 JavaServer Pages (JSP) 的标准标签库,旨在简化 JSP 开发,提高代码的可读性和可维护性。它提供了多种核心标签和扩展标签,包括...
**JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,用于简化JavaServer Pages(JSP)开发。它提供了许多预定义的标签,使得开发者可以更方便地处理常见任务,如控制流、迭代、XML处理等,而...
**JSTL(JavaServer Pages Standard Tag Library)学习大全** JSTL是JavaWeb开发中的一个强大工具,它提供了一套标准的标签库,用于简化HTML或XML页面上的JavaServer Pages(JSP)代码。本资源集合包含了丰富的JSTL...
**JSTL(JavaServer Pages Standard Tag Library)**是一个用于JSP应用的标准化标签库,旨在简化Web应用程序的表示层开发。它包含了多种用于常见任务的定制标签,比如迭代、条件判断、数据管理、XML处理和数据库访问...
**JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面的一个标准标签库,它提供了一组用于处理常见Web开发任务的标签,如迭代、条件判断、XML处理等,极大地简化了Java Servlet和JSP中的代码。...
**JSTL(JavaServer Pages Standard Tag Library)详解与实例源码分析** JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中一个用于简化JSP开发的标签库,它提供了一系列预定义的标签,使得...
**JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP页面提供了一套方便使用的标签,使得开发者能够更高效地编写动态网页。JSTL的主要目标是减少在JSP页面中的脚本代码,...
JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面的一个标准标签库,用于简化JSP开发,提高代码的可读性和可维护性。它包含了一系列预定义的标签,使得开发者能够在JSP页面中处理常见任务,如...
**JSTL(JavaServer Pages Standard Tag Library)详解** JSTL是JavaServer Pages标准标签库,它提供了一系列标签来简化JSP页面的编写,使代码更加简洁、易读,提高开发效率。JSTL主要包含五个核心标签库:Core、 ...
JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中用于简化JSP页面开发的一组标准标签库。它提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、国际化、XML处理等,使得JSP代码...
标题中的"jstl-impl-1.2.jar.rar"是一个压缩文件,它包含了"jstl-impl-1.2.jar"这个JAR包,这通常与Java Web开发相关,特别是与JSP(JavaServer Pages)技术紧密相连。JSTL(JavaServer Pages Standard Tag Library...
**JSP标准标签库(JSTL)详解** 在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术。为了提高JSP页面的可读性和可维护性,JSTL(JSP Standard Tag Library)应运而生。JSTL是一套标准的标签...
标题提到的`jstl-1.1.0.jar`和`jstl-1.2.0.jar`是两个不同版本的JSTL库,它们包含了JSTL的核心组件和EL(Expression Language)支持。 **JSTL 1.1.0 版本**: JSTL 1.1.0是JSTL的一个早期版本,发布于2004年。这个...
**JSTL(JavaServer Pages Standard Tag Library)**是一个用于JavaServer Pages的标签库,它提供了许多用于处理常见Web开发任务的预定义标签。在Java Web开发中,JSTL可以帮助开发者减少Java代码的使用,使得JSP...
**JSTL1.2 Jar包详解** JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面标准标签库,它提供了一套用于处理常见任务的JSP标签,旨在简化JSP开发,提高代码的可读性和可维护性。JSTL1.2是这个库的一...
JSTL1.2.5是这个库的一个版本,具体为taglibs-standard-jstlel-1.2.5.jar,它包含了用于处理EL(Expression Language)表达式的功能。EL是一种轻量级的脚本语言,主要用于在JSP页面中读取和设置JavaBeans的属性。 ...
JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它提供了一系列的标签来简化JSP开发,使代码更加结构化和易于维护。JSTL 1.0是其早期的一个版本,适用于Servlet 2.3和JSP 1.2环境...