IterateTag.java
package tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* @作者 :goby
* @创建时间:2009-6-14 下午04:47:43
* @更新时间:$Date$
*/
public class IterateTag extends TagSupport {
String name;
String[] items;
int i = 1;
public void setName(String name) {
this.name = name;
}
public void setItems(String[] items){
this.items = items;
}
/* (non-Javadoc)
* @see javax.servlet.jsp.tagext.TagSupport#doStartTag()
*/
@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
if(items!=null && items.length>0){
pageContext.setAttribute(name, items[0]);
//把标签体的执行结果插入到输出流中
return EVAL_BODY_INCLUDE;
}
return super.doStartTag();
}
// 不再重复执行标签内容
@Override
public int doAfterBody() throws JspException {
if(i<items.length){
pageContext.setAttribute(name, items[i]);
i++;
return EVAL_BODY_AGAIN;//重复执行标签内容
}else{
return SKIP_BODY; //不再重复执行标签内容
}
}
}
tag.tld
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>it315</short-name>
<uri>/taglib</uri>
<tag>
<name>iterate</name>
<tag-class>tag.IterateTag</tag-class>
<attribute>
<name>name</name>
<requried>true</requried>
</attribute>
<attribute>
<name>items</name>
<requried>true</requried>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
index.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<%@ taglib uri="/taglib" prefix="it315" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Hello</title>
</head>
<body>
<br>
iterate:
<br>
<% String[] books = {"dsdeeeee","123","ss","dd"}; %>
<it315:iterate name="bookname" items="<%=books %>">
<%=pageContext.findAttribute("bookname") %>
${bookname}<br>
</it315:iterate>
</body>
</html>
- 大小: 65.8 KB
分享到:
相关推荐
### JSP自定义迭代标签详解 #### 一、引言 在JSP(JavaServer Pages)开发中,自定义标签可以极大地提高代码的复用性和可维护性。特别是在处理循环迭代逻辑时,自定义迭代标签能够使页面逻辑更加清晰、简洁。本文...
为了提高代码的可读性和可维护性,JSP引入了标签库,其中包括了通用标签和迭代标签。这些标签使得开发者能够以更加简洁的方式处理常见的编程任务,如数据输出、变量设置和循环。以下是关于`<c:forEach>`、`<c:out>`...
3. **迭代标签()**:这是JSP标准标签库(JSTL)中的一种标签,用于遍历集合、数组等数据结构。它提供了一种简单有效的方法来处理列表数据。 #### 二、示例代码解析 给出的代码示例展示了如何在JSP中使用`...
在深入讨论“使用布隆过滤器的基于云的迭代标签搜索协议”之前,需要明确几个关键概念和技术,这些内容构成了该论文研究的核心。 首先,RFID(射频识别)是一种无线通信技术,它利用无线电波信号来识别特定目标,...
总结来说,"简单JSP标签实现迭代"这个实例涉及了JSP自定义标签的创建和使用,包括TLD文件的配置、标签处理类的编写以及标签文件的设计。通过这种方式,我们可以更好地组织和管理代码,提高开发效率,并使得JSP页面...
- **TagSupport类**:是`IterationTag`的一个实现类,通过继承`TagSupport`,开发者可以方便地开发出迭代标签。 ### 标签库应用范围 Java标签库主要应用于Java EE环境下的Web开发,特别是JSP页面的开发。通过标签...
1. **Core库**:提供基础操作,如变量管理、迭代、条件判断以及URL操作。 2. **Format库**:用于数据格式化,尤其是数字和日期,同时也支持国际化。 3. **XML库**:处理XML数据。 4. **SQL库**:处理与关系数据库的...
WebWork标签库分为多个类别,包括通用标签、组件化标签、流程控制标签、迭代标签、UI标签、VUI标签以及国际化支持标签。 1. **通用标签**: - `<ww:property>`:用于获取结果的属性值,如果未指定值,将从值栈顶部...
2. **迭代标签(iterator)** 这个标签用于遍历集合或枚举值。例如: ```jsp <!-- 迭代体 --> ``` `value`属性指定要遍历的集合,`status`属性可以获取迭代状态信息。 3. **选择标签(select、option、...
5. **迭代标签**:`<s:iterator>`是用于遍历集合的标签,它可以遍历任何实现了Iterable接口的对象,如数组、列表或Map。配合`<s:append>`,可以在不同的数据源之间进行灵活的数据整合。 6. **生成标签**:`...
- **迭代标签**:用于循环遍历集合或数组的数据,例如`<c:forEach>`标签。 - **模板标签库**:提供了一系列用于布局控制和页面渲染的标签,如`<ui:repeat>`用于模板化重复区域的渲染。 #### 总结 JSP标签库,特别...
迭代标签`<s:iterator>` 用于循环遍历集合,如List或Map: ```html ``` 此标签能有效处理大量数据展示,`value`属性指定集合名称,`status`属性可提供额外的迭代信息。 ### 5. URL生成标签`<s:url>` 用于...
3. **无体迭代标签执行方法**: - `doStartTag`: 处理标签开始部分。 - `doEndTag`: 处理标签结束部分。 - `release`: 清理资源。 4. **体迭代标签执行方法**: - `doStartTag`: 处理标签开始部分。 - `...
### JSTL 标签库中的迭代标签详解 #### 一、引言 JSTL (JavaServer Pages Standard Tag Library) 是一种专为简化 JavaServer Pages (JSP) 页面开发而设计的标准标签库。它提供了一系列功能强大的标签,用于执行...
1. **Struts2标签库的组成部分**:Struts2标签库包括了多种标签,如UI标签(用于创建用户界面)、表单标签(用于创建表单元素)、条件标签(if、else、elseif等)、迭代标签(iterator等)、国际化标签(i18n)、...
在Struts2中,`<s:iterator>`标签是最常用的迭代标签,用于遍历集合或数组。例如,你可以使用它来显示数据库查询结果: ```jsp <p>Id: , Name: <s:property value="name" /></p> ``` 在这个例子中,`list`是你...
8. `s:iterator`: 迭代标签,用于遍历集合、数组或者Map。通过`value`属性指定迭代源,`status`或`var`属性可以创建一个变量来存储当前迭代状态或元素。 9. `s:if`和`s:else`: 条件判断标签,可以基于OGNL表达式的...