`
uule
  • 浏览: 6352828 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

[转]JSTL

    博客分类:
  • JSTL
阅读更多

如何判断空:

<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:

 

${status.index}      输出行号,从0开始。
${status.count}      输出行号,从1开始。
${status.current}   当前这次迭代的(集合中的)项
${status.first}  判断当前项是否为集合中的第一项,返回值为true或false
${status.last}   判断当前项是否为集合中的最后一项,返回值为true或false
begin、end、step分别表示:起始序号,结束序号,跳跃步伐。
 
如:<c:forEach begin='1' end='5' step='2' items='${list}' var='item'>
表示:操作list集合汇中1~5条数据,不是逐条循环,而是按每2个取值。即操作集合中的第1、3、5条数据。
下面是我从网上找的图,觉得挺好,收藏了:

 

<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

以下是各个函数的用途和属性以及简单示例。

9.7.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”。

9.7.2 判断函数fn:contains函数

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”。

9.7.4 词头判断函数fn:startsWith函数

fn:startsWith函数用来判断源字符串是否符合一连串的特定词头。它除了包含一个string参数外,还包含一个subffx参数,表示词头字符串,同样是String类型。该函数返回一个boolean类型的值。下面看一个示例。

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

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

前者返回“false”,后者返回“true”。

9.7.5 词尾判断函数fn:endsWith函数

fn:endsWith函数用来判断源字符串是否符合一连串的特定词尾。它与fn:startsWith函数相同,包括string和subffx两个参数,并返回一个boolean类型的值。下面看一个示例。

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

前者返回“false”,后者返回“true”。

9.7.6 字符实体转换函数fn:escapeXml函数

fn:escapeXml函数用于将所有特殊字符转化为字符实体码。它只包含一个string参数,返回一个String类型的值。

9.7.8 字符匹配函数fn:indexOf函数

fn:indexOf函数用于取得子字符串与源字符串匹配的开始位置,若子字符串与源字符串中的内容没有匹配成功将返回“-1”。它包括string和substring两个参数,返回结果为int类型。下面看一个示例。

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

前者由于没有匹配成功,所以返回-1,后者匹配成功将返回位置的下标,为1。

9.7.9 分隔符函数fn:join函数

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”。

9.7.10 替换函数fn:replace函数

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”。

9.7.11 分隔符转换数组函数fn:split函数

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}。

9.7.12 字符串截取函数fn:substring函数

fn:substring函数用于截取字符串。它的参数、返回结果和描述如表9.28所示:

表9.28  fn:substring函数

参数

描述

string

源字符串。其类型必须为String类型

beginIndex

指定起始下标(值从0开始)。其类型必须为int类型

endIndex

指定结束下标(值从0开始)。其类型必须为int类型

返回结果

返回一个String类型的值

下面看一个示例。

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

截取结果为“B”。

 

JSTL1.1函数标签库(functions)如fn:length

 

 

具体使用方法请参见下表:

 

函数

描述

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 首尾的空格,并将其返回

 

 

JSTL与EL表达式(为空判断)

一、循环遍历集合

1、在jsp中引入标准函数声明
<%@ taglib uri="http://java.sun.com/jsp/jstl/core " pre fix="c"%> 

2、若要判断集合的大小,则需要引入如下声明
<%@ taglib pre fix="fn" uri="http://java.sun.com/jsp/jstl/functions " %>

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>
 
 数值TransPoint:
104[ABL,LON]:100[ABI,ABG,LON,DYS,LHR]:102[ABI]
或104[ABL,LON]
或WCC,AEA
一、循环遍历集合
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>
 
 
 
  • 大小: 1.2 KB
  • 大小: 30.9 KB
分享到:
评论

相关推荐

    JSTL.rar_JSTL_JSTL下载

    **JSTL(JavaServer Pages Standard Tag Library)详解** JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中的一个标准标签库,它为JSP开发者提供了丰富的、可重用的组件,用于处理常见任务,如...

    standard(1.0and1.1.2)_and_jstl(1.0and1.2)

    在IT行业中,标准库(Standard Tag Library,简称`standard`)和JavaServer Pages Standard Tag Library(JSTL)是用于构建动态Web应用的关键组件。这些库提供了预定义的标签,帮助开发者更高效地编写JSP页面,减少...

    jstl标签jar包(jstl-api-1.2和jstl-impl-1.2)

    `jstl-api-1.2.jar` 和 `jstl-impl-1.2.jar` 是JSTL的两个关键组件: 1. **jstl-api-1.2.jar**:这是JSTL的API接口定义,包含了所有JSTL标签库的接口和抽象类。开发人员在编写JSP页面时需要导入这个包,以便使用...

    JSTL中文帮助文档

    **JSTL(JavaServer Pages Standard Tag Library)中文帮助文档** JSTL 是一套用于 JavaServer Pages (JSP) 的标准标签库,旨在简化 JSP 开发,提高代码的可读性和可维护性。它提供了多种核心标签和扩展标签,包括...

    jstl-api-1.2.jar、jstl-impl-1.2.jar

    **JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,用于简化JavaServer Pages(JSP)开发。它提供了许多预定义的标签,使得开发者可以更方便地处理常见任务,如控制流、迭代、XML处理等,而...

    jstl学习大全,jstl源码,很全的jstl学习代码

    **JSTL(JavaServer Pages Standard Tag Library)学习大全** JSTL是JavaWeb开发中的一个强大工具,它提供了一套标准的标签库,用于简化HTML或XML页面上的JavaServer Pages(JSP)代码。本资源集合包含了丰富的JSTL...

    JSTL教程

    **JSTL(JavaServer Pages Standard Tag Library)**是一个用于JSP应用的标准化标签库,旨在简化Web应用程序的表示层开发。它包含了多种用于常见任务的定制标签,比如迭代、条件判断、数据管理、XML处理和数据库访问...

    jstl标准开发jar包

    **JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面的一个标准标签库,它提供了一组用于处理常见Web开发任务的标签,如迭代、条件判断、XML处理等,极大地简化了Java Servlet和JSP中的代码。...

    jstl,jstl实例源码

    **JSTL(JavaServer Pages Standard Tag Library)详解与实例源码分析** JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中一个用于简化JSP开发的标签库,它提供了一系列预定义的标签,使得...

    jstl源码jstl学习

    **JSTL(JavaServer Pages Standard Tag Library)**是Java Web开发中的一种标准标签库,它为JSP页面提供了一套方便使用的标签,使得开发者能够更高效地编写动态网页。JSTL的主要目标是减少在JSP页面中的脚本代码,...

    jstl and standard_JSTL_

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面的一个标准标签库,用于简化JSP开发,提高代码的可读性和可维护性。它包含了一系列预定义的标签,使得开发者能够在JSP页面中处理常见任务,如...

    jstl的使用有关JSTL的用法详解

    **JSTL(JavaServer Pages Standard Tag Library)详解** JSTL是JavaServer Pages标准标签库,它提供了一系列标签来简化JSP页面的编写,使代码更加简洁、易读,提高开发效率。JSTL主要包含五个核心标签库:Core、 ...

    JSTL必须引用的jstl.jar和 standard.jar两个包!!

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中用于简化JSP页面开发的一组标准标签库。它提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、国际化、XML处理等,使得JSP代码...

    jstl-impl-1.2.jar.rar_ jstl-impl-1.2.jar _jstl-impl-1.2_jstl-imp

    标题中的"jstl-impl-1.2.jar.rar"是一个压缩文件,它包含了"jstl-impl-1.2.jar"这个JAR包,这通常与Java Web开发相关,特别是与JSP(JavaServer Pages)技术紧密相连。JSTL(JavaServer Pages Standard Tag Library...

    standard.jar和jstl.jar

    **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-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 jar包

    **JSTL(JavaServer Pages Standard Tag Library)**是一个用于JavaServer Pages的标签库,它提供了许多用于处理常见Web开发任务的预定义标签。在Java Web开发中,JSTL可以帮助开发者减少Java代码的使用,使得JSP...

    jstl1.2jar包

    **JSTL1.2 Jar包详解** JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面标准标签库,它提供了一套用于处理常见任务的JSP标签,旨在简化JSP开发,提高代码的可读性和可维护性。JSTL1.2是这个库的一...

    JSTL1.2.5 taglibs-standard-jstlel-1.2.5.jar

    JSTL1.2.5是这个库的一个版本,具体为taglibs-standard-jstlel-1.2.5.jar,它包含了用于处理EL(Expression Language)表达式的功能。EL是一种轻量级的脚本语言,主要用于在JSP页面中读取和设置JavaBeans的属性。 ...

    JSTL1.0 jar包下载

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它提供了一系列的标签来简化JSP开发,使代码更加结构化和易于维护。JSTL 1.0是其早期的一个版本,适用于Servlet 2.3和JSP 1.2环境...

Global site tag (gtag.js) - Google Analytics