`

jstl中<c:foreach>标签与struts2中<s:iterator>标签的等效实现

阅读更多
    Jsp页面中的循环迭代,以前用jstl中的<c:foreach>实现的,可今天为了达到团队页面风格的一致而用Struts标签实现,由于以前本人不怎么常用struts的<s:iterator>标签,加上迭代体中还用到了EL表达式,尤其是<s:if>条件的书写jstl中截然不同,结果在这个小小的循环跌停的替换上犯了不少错,折腾了很久,因此记录下来,希望对今后能有所帮助。

jstl实现:
		<c:forEach items="${deptsList }" var="per" varStatus="varStatus">
			<tr> 
				<td align="center">${varStatus.count }</td>
				<td style="display:none" align="center" id="deptId_${per.id }">${per.id }</td>				
				<td >&nbsp;&nbsp;<a href="#" class="handLink" onclick="showDiv('${per.id }','${per.name }');"><span>${per.name }</span></a></td>
				<td>${per.creator }</td>
				<td><fmt:formatDate value="${per.creationTime }" type="both" /></td>
				<td>
					<c:choose>
						<c:when test="${per.latestUpdater!=null }">${per.latestUpdater }</c:when>
						<c:otherwise>NO Modification</c:otherwise>
					</c:choose>				
				</td>
				<td>
					<c:choose>
						<c:when test="${per.latestUpdateTime!=null }"><fmt:formatDate value="${per.latestUpdateTime }" type="both" /></c:when>
						<c:otherwise>NO Modification</c:otherwise>
					</c:choose>
				</td>
				<td align="center">
					<a href="#toUpdateDiv" id="skipToUpdateDiv"><input type="button" class="btn span-2" value="Update" onclick="showDiv('${per.id }','${per.name }');" /></a>&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" class="btn span-2" value="Delete" onclick="deleteDept(${per.id})"/>
	   			</td>
			</tr>
		</c:forEach>

Struts2实现:
		<s:iterator value="deptsList" id="per" status="status">
			<tr> 
				<td align="center">${status.count }</td>
				<td style="display:none" align="center" id="deptId_${per.id }">${per.id }</td>				
				<td >&nbsp;&nbsp;<a href="#" class="handLink" onclick="showDiv('${per.id }','${per.name }');"><span>${per.name }</span></a></td>
				<td>${per.creator }</td>
				<td><s:date name="#per.creationTime" /></td>
				<td>
					<s:if test="%{#per.latestUpdater!=null }">${per.latestUpdater }</s:if>
					<s:else>NO Modification</s:else>			
				</td>
				<td>
					<s:if test="%{#per.latestUpdateTime!=null }"><s:date name="#per.latestUpdateTime"/></s:if>
					<s:else>NO Modification</s:else>
				</td>
				<td align="center">
					<a href="#toUpdateDiv" id="skipToUpdateDiv"><input type="button" class="btn span-2" value="Update" onclick="showDiv('${per.id }','${per.name }');" /></a>&nbsp;&nbsp;&nbsp;&nbsp;
					<input type="button" class="btn span-2" value="Delete" onclick="deleteDept(${per.id})"/>
	   			</td>
			</tr>
		</s:iterator>

注:${status.count }等价于<s:property value="#status.count"/>,这小小的标识符一点用错就能折腾好久,以及<s:if>标签test条件的%、#等。

jstl使用问题:
1. jar包:jstl.jar 和 standard.jar。
2. 日期时间fomat:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<fmt:formatDate value="${per.latestUpdateTime }" type="both" />
分享到:
评论
1 楼 行者逐风 2011-07-28  
谢谢啊,总算清楚了

相关推荐

    <c:forEach>/jstl-1.2

    &lt;c:forEach&gt; 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行&lt;c:forEach&gt;的本体内容。 语法 语法1:迭代一集合对象之所有成员 &lt;c:forEach [var="varName...

    JSTL标准标签库 <C:out>、<c:set>、<c:remove>和<c:catch>标记 <c:if>、<c:choose>、<c:when>和<c:otherwise>标记 <c:forEach>和<c:forTokens>标记

    1. `&lt;c:forEach&gt;`:用于遍历集合、数组或迭代对象,实现循环操作。 2. `&lt;c:forTokens&gt;`:对字符串进行分割,然后对每个分割出来的元素进行循环处理。 **使用JSTL的好处**: - 提高代码的可读性:通过使用XML样式的...

    myeclipse2017 jsp页面 在select里面写 导致后面代码不是彩色问题

    其次,`&lt;c:if&gt;`是JSTL(JavaServer Pages Standard Tag Library)的一部分,用于在JSP页面中实现条件判断。JSTL是一套标准的标签库,旨在减少在JSP页面中使用脚本let和表达式语言,使页面更加清晰和可维护。`&lt;c:if&gt;`...

    c:forEach标签的使用祥解

    在JavaServer Pages (JSP) 开发中,`c:forEach`标签是Java Expression Language (EL) 和 JavaServer Pages Standard Tag Library (JSTL) 的一部分,它提供了一个方便的方式来迭代数组、集合、Map或其他可迭代的数据...

    开发<c:if>标签

    在Java Web开发中,`&lt;c:if&gt;`标签是JSTL(JavaServer Pages Standard Tag Library)的一部分,用于实现条件判断。JSTL是Java EE生态中的一个标准库,提供了许多预定义的标签来简化JSP页面的编写,提高代码的可读性...

    c:foreach的各种用法

    在JSP(JavaServer Pages)开发中,`&lt;c:forEach&gt;` 是一个非常重要的标签,它属于JSTL(JavaServer Pages Standard Tag Library)的一部分,主要用于循环处理集合、数组等数据结构。相较于传统的JSP Scriptlets,使用...

    JSTL中if标签使用方法

    其中,`&lt;c:if&gt;`标签是用于实现条件分支的关键组件之一,类似于编程语言中的if语句。 #### `&lt;c:if&gt;`标签的基本语法及使用场景 `&lt;c:if&gt;`标签主要用来根据表达式的真假来决定是否执行其内部的内容。它有两种基本的...

    c标签-if-foreach-jar

    在这个主题"**c标签-if-foreach-jar**"中,主要涉及到的是JSTL的两个核心标签`&lt;c:if&gt;`和`&lt;c:forEach&gt;`,它们是JSTL提供的条件判断和循环控制标签,通常与`jstl.jar`包一起使用。 首先,让我们详细了解**&lt;c:if&gt;**...

    JSTL开发使用手册

    用于循环的 &lt;c:forEach&gt;?标签 用于分隔字符的 &lt;c:forTokens&gt;?标签? 用于包含页面的 &lt;c:import&gt; 用于得到 URL?地址的 &lt;c:url&gt;?标签? 用于页面重定向的 &lt;c:redirect&gt;?标签? 用于包含传递参数的?&lt;c:param&gt; 标签?.

    基于工作任务的Java+Web应用教程第五章任务1-5.zip

    (2)自已完成使用JSTL的&lt;c:forEach&gt;标签取代Productjsp中的for循环语句。 4.参考教材完成ShowCategoryServlet并相应修改Category.jsp. 5.自己完成ShowProductServlet, ShowItemServlet并相应修改Product.jsp和Item....

    JSTL标签使用总结

    本文将详细介绍JSTL中的核心标签:&lt;c:if&gt;、&lt;c:choose&gt;、&lt;c:forEach&gt;、&lt;c:forTokens&gt;、&lt;c:catch&gt;、&lt;c:remove&gt;、&lt;c:set&gt;、&lt;c:import&gt;、&lt;c:redirect&gt;、&lt;c:url&gt;以及与之相关的&lt;fmt&gt;标签库。 #### 1. &lt;c:if&gt; &lt;c:if&gt;标签...

    jstl标签库 手册

    - **&lt;c:if&gt;** 和 **&lt;c:choose&gt;**:实现条件判断,`&lt;c:if&gt;`用于简单的条件测试,`&lt;c:choose&gt;`配合`&lt;c:when&gt;`和`&lt;c:otherwise&gt;`实现多分支选择。 - **&lt;c:forEach&gt;** 和 **&lt;c:forTokens&gt;**:进行循环操作,`&lt;c:...

    JSTL 核心标签库 使用

    本文将深入探讨JSTL的核心标签库(core tag library),主要包括`&lt;c:set&gt;`、`&lt;c:remove&gt;`、`&lt;c:catch&gt;`、`&lt;c:if&gt;`、`&lt;c:choose&gt;`以及`&lt;c:forEach&gt;`等标签的使用。 1. `&lt;c:set&gt;`标签: `&lt;c:set&gt;`用于设置变量的值,...

    struts的标签jstl

    2. **模块化**:使用Tiles框架,通过Struts的`&lt;tiles:insert&gt;`标签实现页面的模块化和复用。 3. **错误处理**:利用Struts的`&lt;html:errors&gt;`标签显示全局错误信息,确保用户体验良好。 4. **性能优化**:合理使用...

    JSTL标签实例

    - `&lt;c:choose&gt;`, `&lt;c:when&gt;`, `&lt;c:otherwise&gt;`:这些标签组合起来用于实现多条件判断,类似于Java中的switch-case语句。 - `&lt;c:set&gt;`:设置变量,可以将值存储到page、request、session或application作用域中。 - `...

    大量使用的JSTL标签用法.docx

    本文件主要涉及了JSTL中的一些核心标签,如`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:when&gt;`、`&lt;c:otherwise&gt;`和`&lt;c:forEach&gt;`等,并展示了它们在实际应用中的用法。 1. **条件判断标签**: - `&lt;c:if&gt;`:用于进行条件判断,`...

    JSTL标签库

    主要包括`&lt;c:out&gt;`、`&lt;c:set&gt;`、`&lt;c:remove&gt;`、`&lt;c:catch&gt;`、`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:when&gt;`、`&lt;c:otherwise&gt;`、`&lt;c:forEach&gt;`、`&lt;c:forTokens&gt;`、`&lt;c:import&gt;`、`&lt;c:url&gt;`和`&lt;c:redirect&gt;`等标签。这些标签...

    jsp标准标签标准动作

    Core库是JSTL中最基本的库,它包含了许多与HTML元素相似的功能标签,如`&lt;c:out&gt;`、`&lt;c:set&gt;`、`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:when&gt;`、`&lt;c:otherwise&gt;`、`&lt;c:forEach&gt;`等。 - `&lt;c:out&gt;`:用于安全地输出数据,防止...

    JSTL标签基本用法详解

    `&lt;c:param&gt;` 通常与`&lt;c:url&gt;`或`&lt;jsp:include&gt;`一起使用,添加URL查询参数。如: ``` &lt;c:param name="id" value="${productId}"/&gt; ``` 以上就是JSTL中常用的一些标签及其用法,它们极大地简化了JSP页面的编程,...

Global site tag (gtag.js) - Google Analytics